2012-01-09 8 views
2

私はの親カテゴリフィールドのintを持つカテゴリモデルがありますか?データ型。 LINQで...Linqラムダヌル可能なintをnull- coalescing

WHERE 
    ISNULL(ParentID,0) == ParentCategoryID 

が、それは私がを適用することはできません私に言っていますので、苦労しているように見える??: 私はこれを達成しようとしていますをParentIDに設定するには、null可能な整数である必要があります。

IList<Category> ChildCategories = AllCategoriesAsList 
    .Where(c => c.ParentID ?? 0 == ParentCategoryID) 
    .ToList(); 

私はちょっと固まっています。このような

答えて

4

何かが本当に直接あなたの質問に答えていない

IList<Category> ChildCategories = AllCategoriesAsList 
    .Where(c => (c.ParentID.HasValue ? c.ParentID.Value : 0) == ParentCategoryID) 
    .ToList(); 
+0

私は「HasValue」について知らなかった。素晴らしい。ありがとうございますアレックス –

+0

@HvaFaenあなたは歓迎です – Alex

1

を行うが、ISNULL() in a Where filterを使用して

WHERE  ISNULL(ParentID,0) == ParentCategoryID 

WHERE (ParentId is NULL AND ParentCategoryId = 0) OR (ParentId = ParentCategoryId) 
のように書き換えることができ、テーブル/インデックス・スキャンにつながることに注意してください可能性があり通常はより良い性能を有するはずの

である。同様に、LINQの同等性は、合体問題を回避するだろう。

+0

私は将来のクエリのためにオンボードを取るでしょう。ありがとうございましたnonnb –