0

我使用 EF 作为 ORM。我的数据库中有表“菜单”,其中列“parentID”(nvarchar)可以为NULL。我想获得所有具有 parentId == NULL 的菜单。当我写这个时,它的工作(菜单有所有nesseccary菜单):

using (var db = new MyDbContext())
{                    
    IEnumerable<Menu> menus = db.Menus.Where(m => m.ParentId == null).ToList();
}

但是这段代码不起作用(菜单等于 null):

using (var db = new MyDbContext())
{    
    string parentId = null;
    IEnumerable<Menu> menus = db.Menus.Where(m => m.ParentId == parentId).ToList();                    
}

谁能解释为什么?

4

2 回答 2

1

1)当你写:

.Where(m => m.ParentId == parentId)

它转换为 T-SQL 为:

WHERE ParentId=null -- incorrect T-SQ evaluation against NULL

2)当你写:

.Where(m => m.ParentId == null)

它转换为 T-SQL 为:

WHERE ParentId IS NULL -- correct T-SQL evaluation against NULL
于 2013-02-07T13:48:08.237 回答
0
string parentId == null;

应该:

string parentId = null;
于 2013-02-07T13:19:12.680 回答