在 C#/.NET3.5 中构造动态 SQL 查询的最佳方法?

2024-03-13

我目前正在进行的一个项目涉及重构 C# Com 对象,该对象充当某些 Sql 2005 数据库的数据库访问层。

现有代码的作者使用字符串和许多 if 语句手动构建了所有 sql 查询,以构造相当复杂的 sql 语句(约 10 个连接、> 10 个子选择、约 15-25 个 where 条件和 GroupBy)。基表始终是相同的,但连接、条件和分组的结构取决于传递到我的类/方法中的一组参数。

像这样构建 sql 查询确实有效,但它显然不是一个非常优雅的解决方案(而且也很难阅读/理解和维护)...我可以自己编写一个简单的“querybuilder”,但我很确定我不是第一个遇到此类问题的人,因此我的问题是:

  • How do you构建您的数据库查询?
  • C# 是否提供了一种动态构建查询的简单方法?

我使用 C# 和 Linq 执行类似的操作来根据用户输入过滤日志条目(请参阅条件 Linq 查询 https://stackoverflow.com/questions/11194/conditional-linq-queries):

IQueryable<Log> matches = m_Locator.Logs;

// Users filter
if (usersFilter)
    matches = matches.Where(l => l.UserName == comboBoxUsers.Text);

 // Severity filter
 if (severityFilter)
     matches = matches.Where(l => l.Severity == comboBoxSeverity.Text);

 Logs = (from log in matches
         orderby log.EventTime descending
         select log).ToList();

编辑:直到最后一条语句中的 .ToList() 才执行查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C#/.NET3.5 中构造动态 SQL 查询的最佳方法? 的相关文章

  • 如何将带有自定义分配器的 std::vector 传递给需要带有 std::allocator 的函数?

    我正在使用外部库 pcl 因此我需要一个不会更改现有函数原型的解决方案 我正在使用的一个函数生成一个std vector
  • 对 boost 库的依赖项没有完整路径

    我已经成功构建了动态库 依赖于使用自定义前缀构建和安装的 boost 库 b2 install prefix PREFIX 然而 当我跑步时otool L在我的库中 我得到如下输出 libboost regex dylib compatib
  • HttpWebRequest vs Webclient(特殊场景)

    我知道这个问题之前已经回答过thread https stackoverflow com questions 1694388 webclient vs httpwebrequest httpwebresponse 但我似乎找不到详细信息 在
  • 如何在 C++ 中将 CString 转换为 double?

    我如何转换CString to a double在 C 中 Unicode 支持也很好 Thanks A CString可以转换为LPCTSTR 这基本上是一个const char const wchar t 在 Unicode 版本中 知
  • C# 委托责任链

    为了我的理解目的 我实现了责任链模式 Abstract Base Type public abstract class CustomerServiceDesk protected CustomerServiceDesk nextHandle
  • C++ 插件的“最适合”动态类型匹配

    我有一个几乎所有东西都是插件的架构 该架构以图形用户界面为基础 其中每个插件都由一个 表面 即用户可以通过其与插件交互的 UI 控件 表示 这些表面也是插件 每当添加新插件时 瘦主机都会自动确定哪个可用表面与其最匹配的 UI 如何在 C 中
  • 预处理后解析 C++ 源文件

    我正在尝试分析c 使用我定制的解析器的文件 写在c 在开始解析之前 我想摆脱所有 define 我希望源文件在预处理后可以编译 所以最好的方法是运行C Preprocessor在文件上 cpp myfile cpp temp cpp or
  • 默认析构函数做了多少事情

    C 类中的默认析构函数是否会自动删除代码中未显式分配的成员 例如 class C public C int arr 100 int main void C myC new C delete myC return 0 删除 myC 会自动释放
  • C++11 动态线程池

    最近 我一直在尝试寻找一个用于线程并发任务的库 理想情况下 是一个在线程上调用函数的简单接口 任何时候都有 n 个线程 有些线程比其他线程完成得更快 并且到达的时间不同 首先我尝试了 Rx 它在 C 中非常棒 我还研究了 Blocks 和
  • 返回年份数组作为年份范围

    我正在尝试查询一个包含以下内容的表character varying 年份列 并将这些年份作为逗号分隔的年份范围字符串返回 年份范围将由数组中存在的连续年份确定 不连续的年份 年份范围应以逗号分隔 数据类型的原因是character var
  • 安装 SQL Server 2012 错误“系统无法打开指定的设备或文件。”

    我正在尝试在已安装 SQL Server 2008 R2 Express 和 Windows 7 的计算机上安装 SQL Server 2012 Developer 我使用 Microsoft Secure Download Manager
  • .NET 客户端中 Google 表格中的条件格式请求

    我知道如何在 Google Sheets API 中对值和其他格式进行批量电子表格更新请求 但条件格式似乎有所不同 我已正确设置请求 AddConditionalFormatRuleRequest formatRequest new Add
  • 为什么要在 C++ 中使用 typedef?

    可以说我有 set
  • WPF。如何从另一个窗口隐藏/显示主窗口

    我有两个窗口 MainWindow 和 Login 显示登录的按钮位于主窗口 this Hide Login li new Login li Show 登录窗口上有一个检查密码的按钮 如果密码正确 我如何显示主窗口 将参数传递给 MainW
  • 字符串文字上的 SQL Server T-SQL N 前缀[重复]

    这个问题在这里已经有答案了 这可能是一个菜鸟问题 但我发现了一些 T SQL 查询示例来验证数据库大小SELECT and WHERE clause here http technet microsoft com en us library
  • 如何引用解决方案之外的项目?

    我有一个 Visual Studio C 解决方案 其中包含一些项目 其中一个项目需要引用另一个不属于解决方案的项目 一开始我引用了dll
  • 在 C++17 中使用 成员的链接错误

    我在 Ubuntu 16 04 上使用 gcc 7 2 并且需要使用 C 17 中的新文件系统库 尽管确实有一个名为experimental filesystem的库 但我无法使用它的任何成员 例如 当我尝试编译此文件时 include
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • C语言声明数组没有初始大小

    编写一个程序来操纵温度详细信息 如下所示 输入要计算的天数 主功能 输入摄氏度温度 输入功能 将温度从摄氏度转换为华氏度 独立功能 查找华氏度的平均温度 我怎样才能在没有数组初始大小的情况下制作这个程序 include
  • 受限 AppDomain 中的代码访问安全异常

    Goal 我需要在权限非常有限的 AppDomain 中运行一些代码 它不应该访问任何花哨或不安全的内容 except对于我在其他地方定义的一些辅助方法 我做了什么 我正在创建一个具有所需基本权限的沙箱 AppDomain 并创建一个运行代

随机推荐

  • 如何隐藏mapbox-gl中所有打开的标记弹出窗口?

    我找不到隐藏所有打开的标记弹出窗口或什至检查标记弹出状态的方法 我会想getPopup isOpen 可以让你检查状态 并且getPopup remove 在迭代某个数组中所有存储的标记时运行 将完成您在这里所需的操作
  • Minimax/ Alpha beta 剪枝移动顺序?

    我读过 例如 http radagast se othello Help order html http radagast se othello Help order html 首先搜索每个级别的最佳动作 可以使用迭代加深找到 使得搜索速度
  • 如何在heroku中运行“Rails Runner”?

    这就是我想做的 查找是否有人在推特上发布过有关所提供的特定课程的推文 如果有人确实发布了相关推文 我想将该推文保存到我的推文模型中 然后在相应的课程页面中显示该推文 这些脚本通过运行在本地运行rails runner get tweets
  • transitiveMemberOf $filter 仅当您是直接成员时才有效

    我正在尝试使用 Graph 来查明用户是否是某个组的传递成员 例如 Bob 是 Marketing 的成员 而 Marketing 是 Company 的成员 Bob 是 Company 的成员吗 If I do me transitive
  • 如何在 FastAPI 的 CORS 中间件中正确使用正则表达式?

    我有一个使用 FastAPI 后端和 Next js 前端的应用程序 在具有稳定来源的开发和生产中 我能够毫无问题地使用 CORSMiddleware 不过 我已经使用 Vercel 部署了 Next js 前端 并且希望利用 Vercel
  • 提取“/”前后的字符

    我试图提取 之前和之后的字符 但没有成功 句子是 XXXX YYY ZZZ AV HAHEHRS 3061 SDDW ASDA DDSF SAO JOSE DOS CAMPOS SP CEP 00000 000 输出应该是 SAO JOSE
  • PDFBox:处理非常大的 PDF。

    我正在处理一些非常大的 PDF 有些大小超过 7GB PDF 最多有 20 000 页和许多整页彩色图像 我想使用 PDFBox 来处理 PDF 但由于大小 当我尝试打开 PDF 时 出现 OutOfMemoryError 我正在使用版本
  • 如何用一个元素创建 3D 透视图像?

    I have a code that given an image does the effect of perspective in 3D This is the result 这是代码 thumb margin 100px perspe
  • 混合 http/https 站点

    到目前为止 我的 https 部署通常涉及使用 https 对整个站点进行简单锁定 并在 Web 服务器上提供 http 到 https 的重定向 我现在计划拥有一个 ASP NET MVC 站点 在云上 其中包含 http 和 https
  • Firebase 身份验证令牌过期时间

    我刚刚升级到新版本的 Firebase 但找不到在哪里可以设置 Firebase 身份验证令牌的过期时间 它曾经位于 Firebase 旧布局中的身份验证部分下 我将其设置了 1 年 Firebase 还有这个吗 如果您继续使用 Fireb
  • 0x7f 有什么特别之处?

    我正在阅读 avro 格式规范并试图了解其实现 下面是解码的方法长值 https avro apache org docs 1 8 2 spec html schema primitive Override public long read
  • 为什么局部函子不好?

    例如 如果谓词仅使用一次 那么在主函数中声明类加倍器有什么问题 include
  • 如何停止 docker pull

    我刚刚开始学习docker 在教程中 我看到了 docker pull 命令 可以像这样使用docker pull container name从 docker hub 存储库中提取相应的容器 But in case if you canc
  • HDFS 复制因子更改

    如果集群中的复制因子发生变化 例如从 5 更改为 3 并且集群重新启动 旧文件块会发生什么情况 它们是否会被视为过度复制并被删除 或者复制因子仅适用于新文件 这意味着旧文件块被复制 5 次 新文件块 重新启动后 被复制 3 次 如果集群不重
  • 为什么在定义具有 0 个输出的 MATLABContainers.Map 子类方法时出现“太多输出参数”?

    我试图通过子类化 MATLABContainers Map 类并添加具有 0 个输出的附加方法来扩展它 但在执行该方法时遇到 输出参数太多 错误 这并不是新方法实现所特有的 任何使用 0 输出扩展Containers Map 的其他方法都会
  • GraphQL 嵌套查询定义

    我正在尝试为我的查询创建树状结构 以摆脱像 peopleList peopleSingle peopleEdit peopleAdd peopleDelete companyList companySingle companyEdit co
  • Ruby 中有 nvl() 函数还是我必须自己编写它?

    我想使用 Oracle 的等效项nvl Ruby 中的函数 是否有内置函数或者我必须自己编写一个 Edit 我用它来将一些 sql 重写为 ruby INSERT INTO my table id val VALUES 1 nvl my v
  • git 和 CR 与 LF(但不是 CRLF)

    这听起来像是一个多余的问题 而且很可能是一个多余的问题 但我找不到答案 情况是这样的 我的应用程序正在创建以 CR 作为行结尾的文本文件 更具体地说 我没有明确地将行结尾设置为 CR 它恰好是我用来获取文本正文的命令的输出 当然 我可以手动
  • 使用 ExecutorService 执行异步任务时出现问题

    我曾问过一个问题earlier https stackoverflow com questions 8668839 java velocity engine initialization issue关于 ExecutorService 和
  • 在 C#/.NET3.5 中构造动态 SQL 查询的最佳方法?

    我目前正在进行的一个项目涉及重构 C Com 对象 该对象充当某些 Sql 2005 数据库的数据库访问层 现有代码的作者使用字符串和许多 if 语句手动构建了所有 sql 查询 以构造相当复杂的 sql 语句 约 10 个连接 gt 10