0

私はEFをORMとして使用しています。データベースにテーブル "Menu" があり、列 "parentID"(nvarchar) は NULL にすることができます。parentId == NULL を持つすべてのメニューを取得したい。私がこれを書くとき、それは仕事です(メニューにはすべての必需品メニューがあります):

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

しかし、このコードは機能しません (menus は 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 に答える