实体框架ISNULL在Where条件下

时间:2013-12-19 14:00:34

标签: c# .net entity-framework isnull

我在SQL Server中有一个查询:

SELECT * FROM MyTable t
WHERE ISNULL(t.Status,'') = ''

我如何在Entity Framework中做到这一点?

编辑: 哦对不起,我的代码就像

WHERE ISNULL(t.Status,'') = ''

2 个答案:

答案 0 :(得分:14)

尝试类似

的内容

MyTable.Where(t =>(t.Status ??“”)==“CO”)

答案 1 :(得分:6)

虽然问题还可以,但逻辑并不合理。 因为如果某个值等于CO,则它永远不会等于NULL''。 在这种情况下,您可以轻松地将其称为:

SQL:

SELECT * FROM MyTable t
WHERE t.Status = 'CO'

的LINQ:

var items = (from t in db.MyTable
             where t.Status == "CO"
             select t);

但是,如果你需要它在NULL时有一个默认值并与该值比较,那就更有意义了(参见示例):

SQL:

SELECT * FROM MyTable t
WHERE ISNULL(t.Status, 'CO') = 'CO'

的LINQ:

var items = (from t in db.MyTable
             where (t.Status ?? "CO") == "CO"
             select t);

这将为您提供t.Status为NULL或等于CO的所有项目。 当然,这只是一个例子。

注意:生成的sql可能会略有不同,但结果是一样的。 它可能看起来像这样:

SELECT * FROM MyTable t
WHERE COALESCE(t.Status, 'CO') = 'CO'