1

Linq to Entities を記述して、SQL Server と同様の where in 句を作成するにはどうすればよいですか? 問題は、検索する必要があるフィールドが nullable int であることです。

次のコードがありますが、「'System.Collections.Generic.List`1' 型の定数値を作成できません。このコンテキストではプリミティブ型 ('Int32、String、および Guid' など) のみがサポートされています。 "

public IList<WantedInfoView> GetWanted(string idList)
{
    List<int> contactIDList = new List<int>();
    contactIDList = idList.Split(',').Select(n => int.Parse(n)).ToList();

    IEnumerable<WantedInfoView> wantedList = (
       from w in db.Wanteds
       where contactIDList.Contains(w.contact_id)
       select new WantedInfoView
       {
           ...
       }
    );
}
4

1 に答える 1

1

Entity Framework でコレクション値パラメーターを参照してください。

受け入れられた回答は、ヒント 8 - LINQ to Entities を使用して 'WHERE IN' スタイルのクエリを作成する方法 にリンクしています。これは、探しているものです。

WHERE IN 句のスレッドも、まさにこの問題に取り組んでいるようです。

簡単に言うと、コレクションを LINQ to Entities クエリのパラメーターとして使用することはできません。フレームワークはそれから SQL クエリを作成できません。あまりきれいではありませんが、回避策があります。

于 2012-08-09T23:13:03.047 に答える