6

モデルのデータベースから取得した linq リストがあります。これで、コントローラーから文字列配列を取得できました。ステートメントを作成したい

疑似コード

List<object> objlist = db.objects.tolist();
string[] strarray; // obtained from a long code.
var k = objlist.Where(u => u.somecol == strarray[0] || u.somecol == strarray[1]........strarray[n]).toList();

strarray[]myは可変長で、最大 1000 語を含むことができるため、これを達成する方法が少し混乱しています。

4

4 に答える 4

9

Array.IndexOf<T> Methodを使用して、配列にアイテムが含まれているかどうかを確認できます。

bool strarrayContainsX = Array.IndexOf<string>(strarray, "X") >= 0;

ただし、いくつかの項目を超えるものについては、文字列配列の代わりにHashSet<string>を使用することをお勧めします。HashSet<T> クラスは、セットにアイテムが含まれているかどうかを確認するためのContains メソッドを提供します。

HashSet<string> strset = new HashSet<string>(strarray);
bool strsetContainsX = strset.Contains("X");

結果のクエリは次のようになります。

var k = objlist.Where(u => strset.Contains(u.somecol)).ToList();
于 2013-08-17T11:37:41.753 に答える
3

使用Contains:

var k = objlist.Where(u => strarray.Contains(u.somecol)).toList();
于 2013-08-17T11:31:41.073 に答える
3

これを試して:

List<object> objlist = db.objects.tolist();
string[] strarray; // obtained from a long code.
var k = objlist.Where(u => strarray.Contains(u.somecol)).toList();
于 2013-08-17T11:31:42.450 に答える
2
var k = objlist.Where(u => strarray.Any(x=>x == u.somecol)).ToList();
于 2013-08-17T11:31:19.460 に答える