我使用EF作为ORM。我的数据库中的表“Menu”包含“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();
}
有人可以解释原因吗?
答案 0 :(得分: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
答案 1 :(得分:0)
string parentId == null;
应该是:
string parentId = null;