LINQ to Entity Framework的where子句的参数变量

时间:2018-07-13 16:17:01

标签: linq linq-to-entities

我有这样的查询:

var labs = context.vw_Lab_Space.AsNoTracking()
                .Where(lab => lab.Lab_Name.ToLower().Contains(text) || lab.Lab_Owner_Name.ToLower().Contains(text)
                || lab.Lab_Owner_Email.ToLower().Contains(text) || lab.Region_Code.ToLower().Contains(text)
                || lab.Country_Code.ToLower().Contains(text) || lab.Country_Name.ToLower().Contains(text)
                || lab.Site_Code.ToLower().Contains(text) || lab.Site_Name.ToLower().Contains(text)
                || lab.Building_Code.ToLower().Contains(text) || lab.Building_Name.ToLower().Contains(text))

这将正确编译/运行。我在多个地方进行相同的查询,所以我想提取该查询。如果我这样做:

Func<vw_Lab_Space, bool> whereQuery = lab => lab.name.....
var labs = context.vw_Lab_Space.AsNoTracking()
             .Where(whereQuery)

然后可以正常编译,但是出现运行时错误消息,提示未设置对象。为什么我不能提取该查询?

在更大的方案中,where子句要复杂得多,所以我想将逻辑提取到返回该类型内容的函数中,以便无需重复重复相同的代码即可使用它。

0 个答案:

没有答案
相关问题