如何使用null-able参数实现LINQ Where子句。短路不起作用

时间:2016-11-04 18:04:14

标签: sql entity-framework linq

以下是我正在使用的简化方案:如果员工是FullTime,UI有下拉列表来搜索员工。在C#中,我将其存储为bool?。在DB中,这也是一个可以为空的列。

我的linq看起来像这样

bool? ft = null;
return db.Employees.Where(e => !ft.HasValue || e.FullTime.HasValue && e.FullTime.Value == ff.Value)

在浏览了一些SO问题之后,我了解到这并没有像你期望的那样在C#中短路。相反,整个事情传递给sp_executesql。 在LINQ pad中工作时,它先前失败,查询根本没有命中db。

我有多个从UI获得的字段,实际上我的linq看起来像db.Employees.Where(expr).Where(expr).Where(expr)...

此外,由于查询中有大量数据集,我不想用函数替换EXPRESSIONS。将函数放在Where()中返回IEnumerable但我希望结果是IQueryable

0 个答案:

没有答案