我有这样的查询:
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子句要复杂得多,所以我想将逻辑提取到返回该类型内容的函数中,以便无需重复重复相同的代码即可使用它。