c# - 如何使 WHERE 子句中的项目可选?

标签 c# linq entity-framework

<分区>

public List<..> GetSomething(int column1Value, int column2Value, string column3Value)
{

 from t1 in this.DataContext.Table1
 where  t1.column1 == column1Value &&
    t1.column2 == column2Value &&
    t1.column3 == column3Value

}

现在我想重新使用上面的查询,即不想重复它,但唯一的区别是我希望 t1.column3 == column3Value 成为选项,所以我这样调用它:

GetSomething(1,2,"HELLO");

GetSomething(1,2);

是否可以使 where 子句的这一部分成为条件?意思是如果你传入 "",那么它会忽略那个子句?

最佳答案

是的,只需将您的陈述分成两部分,如下所示:

var query = this.DataContext.Table1
                .Where( x => column1 == column1Value && x.column2 == column2Value);

if ( column3Value != "" )
    query = query.Where( x => x.column3 == column3Value);


// Your existing processing of query

关于c# - 如何使 WHERE 子句中的项目可选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20289134/

相关文章:

C# 派生类,重载解析

c# - 调试时无法在 visual studio 中编写代码

c# - 使用与主程序存储在不同文件夹中的引用库 (dll)?

c# - 获取和设置 SQL 超时?

c# - 将日期时间字符串列表转换为日期时间值列表

linq - 何时更喜欢用 SelectMany() 表示的连接而不是 Linq 中用 join 关键字表示的连接

entity-framework - 实体不公开外键属性的 DbUpdateException

c# - 如何从 linq 到实体查询中获取 toTraceString()?

C# .net 3.5+ Dictionary<string, string> 键/值对显示值作为默认选择 – MVC 选择列表

c# - 如何确定我的 EF 6 数据库初始化程序是否会运行?