3

クエリ文字列から取得したレコード ID のカンマ区切りのリストがあります。これらの ID を持つすべてのレコード (SQL Server データベースから) を返す必要があります。Linqでそれを行う最良の方法は何ですか?

最終的には「WHERE id IN (1,2,3,...)」という形式の SQL ステートメントに変換されると思います。そのクエリには、最初に使用したのと同じカンマ区切りのリストが含まれているため、それを int 配列にアンパックしてから、Linq に再度変換させるのは残念です。でも、それしか方法がないならいいんです。

4

2 に答える 2

6

ほのめかしたように、最初に配列に変換するのが最も簡単です。

string csv = "1,2,3";
IEnumerable<int> ids = csv.Split(',').Select( str => int.Parse(str));

var records = db.Records.Where( rec => ids.Contains(rec.id) );
于 2012-08-09T20:05:40.360 に答える
1

Dynamic Linq を使用して不要な変換を回避する

.Where("MyColumn.Contains(@0)", myArray)

ダイナミック Linq - String.Split

動的linqクエリで「contains」または「like」を使用するには?

于 2012-08-09T20:10:39.333 に答える