1

Id の動的な番号を使用して DB から選択する必要があるサイトを作成しており、エンティティ フレームワークを使用しているため、これを行う代わりに問題が発生します。

IQueryable source = content.Products;

List<Object> o = new List<Object>();

foreach(int ID in IDS)
 o.Add(content.Where(s => s.id == ID).FirstOrDefault()); // getting the row from DB   foreach loop

これの代わりに、動的な数の ID を使用して DB からすべてのエンティティを取得したいと思います

o = content.Where(s = s.id == ID || s.id == ID || s.ID == ID).ToList();

ただし、where 条件は文字列のように動的である必要があるため、ループから ID を追加してから選択を次のようにすることができます

string s = "where ";

foreach(int id in ids)
s += " id = " + id + " or ";

o = content.Where(s).ToList;

そのため、各行に数回アクセスする必要はなく、DB に 1 回だけアクセスします。

4

1 に答える 1

0

これに使用できますContains

List<Product> o = content.Where(s => ids.Contains(s.id)).ToList();

INこれは SQL句に変換されids、単一のクエリで指定されたすべての製品をロードします。

于 2012-07-11T19:34:53.237 に答える