2012-11-13 8 views
9

の要素例外を比較することはできません私は、本質的に持っている:はEFクエリ

public ActionResult MyAction(List<int> myIds) 
{ 
    var myList = from entry in db.Entries 
      where (myIds == null || myIds.Contains(entry.Id)) 
       select entry; 
    return View(myList); 
} 

目的は、渡されたIDを持つアイテムのみを取得したり、それらのすべてを返すことです。私はmyListを返すときに私は、私はいくつかのデバッグを行っている、例外を取得しています

(他の基準を明確にするため切り取ら)とやったときにそれが起こる.ToList()

は「タイプの要素を比較することはできません System.Collections.Genericリスト `1 '。
プリミティブ型(Int32、String、Guidなど)およびエンティティ 型のみがサポートされています。

+0

可能な重複/stackoverflow.com/questions/23937112/cannot-compare-elements-of-type-system-collections-generic-icollection1-only-p) –

+1

これは1年半前に "duplicate"と書かれていたことに注意してください。 –

+0

回答はもっとあります創造の日より重要です。 http://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even-though-its-much-newer-and-ha/147651#147651を参照してください。あなたがそれが明白でないことに同意するなら、http://meta.stackexchange.com/questions/281980/add-clarification-link-to-possible-duplicate-automated-comment –

答えて

22

myIdsがnullだったため問題が発生しました。

私は必要な

:/:[ `1のみプリミティブ型、列挙型とエンティティタイプがサポートされています\型「System.Collections.Generic.ICollectionの要素を比較することはできません](HTTPの

public ActionResult MyAction(List<int> myIds) 
{ 
    if(myIds == null) 
    { 
     myIds = new List<int>();  
    } 
    bool ignoreIds = !myIds.Any(); 

    var myList = from entry in db.Entries 
       where (ignoreIds || myIds.Contains(entry.Id)) 
       select entry; 
    return View(myList); 
} 
+17

に投票してください。より具体的には、あなたが'where'節でヌルチェックを行います。 – htxryan

+0

ああ!ありがとう@htxryan。私はあなたのコメントをほとんど逃したが、それはより多くの答えのための私の検索を保存した – Pallavi