c# - 有没有比在开头使用 1=1 更好的动态构建 SQL WHERE 子句的方法?

标签 c# sql

我正在构建一些 SQL在 C# 中查询。它会根据在代码中存储为变量的某些条件而有所不同。

string Query="SELECT * FROM Table1 WHERE 1=1 ";
if (condition1) 
    Query += "AND Col1=0 ";
if (condition2) 
    Query += "AND Col2=1 ";
if (condition3) 
    Query += "AND Col3=2 ";

它有效,但测试 1=1 似乎并不优雅。如果我不使用它,我将不得不记住并每次检查是否已将“where”关键字添加到查询中。

有更好的解决方案吗?

最佳答案

将条件保存在列表中:

List<string> conditions = new List<string>();

if (condition1) conditions.Add("Col1=0");
//...
if (conditions.Any())
    Query += " WHERE " + string.Join(" AND ", conditions.ToArray());

关于c# - 有没有比在开头使用 1=1 更好的动态构建 SQL WHERE 子句的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17321281/

相关文章:

sql - 更优雅的 SQL?

SQL从一个查询中获取结果作为列到另一个查询

mysql - mysql和oracle的insert语句

c# - SSDT 数据库项目与 SonarQube 的代码分析集成

c# - 将 JSON 反序列化为 IDictionary<string,object>

c# - Caliburn.微单元测试

c# - 使用未知名称/参数数量更新 sql 语句

c# - 如何使用正则表达式删除空标签?

c# - 为什么C#线程自动停止工作

sql - 确定一个坐标是否在另一个半径内