实体框架中的Customized(Where)子句

时间:2019-07-07 10:50:34

标签: c# asp.net-core entity-framework-core

我正在尝试在读取SQL Server数据库表时放入Where子句,其中某些条件取决于其他变量,我有7个字段在数据库中进行过滤,并由用户输入,任何人都可以有一个值或可以为null。如果所有搜索变量Var1等都不为空

Select * from Table1 where Field1 = var1 and Field2 = Var2 and Field3 = Var3

但是,如果Var2例如为null,则应在Select语句中将其忽略,并且看起来像

Select * from Table1 where Field1 = var1 and Field3 = Var3

这很像SQL字符串,但是当在Entity Framework中使用带Lambda表达式的select语句时,我找不到像简单sql字符串之类的东西。

我正在将VS2017与c#编码语言一起用于ASP.NET Core应用程序。数据库服务器是SQL2016。

这看起来很标准,但是我找不到解决方案。有没有人有好的解决方案?

1 个答案:

答案 0 :(得分:2)

如果我正确理解了您想要什么,那么标准方法是:

using (var context = new SomeContext())
{
    IQueryable<SomeEntity> query = context.SomeEntities;

    if (var1 != null)
        query = query.Where(x => x.Field1 == var1);

    if (var2 != null)
        query = query.Where(x => x.Field2 == var2);

    // and so on

    // use the query somehow
}