60

linqを使用して、行の値が配列に存在するかどうかを確認する必要があります。
SQLクエリに相当します。

WHERE ID IN (2,3,4,5)

どうすればいいですか?

4

9 に答える 9

57

。含む

var resultset = from x in collection where new[] {2,3,4,5}.Contains(x) select x

もちろん、あなたの単純な問題で、あなたは次のようなものを持つことができます:

var resultset = from x in collection where x >= 2 && x <= 5 select x
于 2010-02-25T13:45:40.800 に答える
28

IEnumerable.Contains()を使用してSQLINと同等の機能を実行します。

var idlist = new int[] { 2, 3, 4, 5 };

var result = from x in source
          where idlist.Contains(x.Id)
          select x;
于 2010-02-25T13:48:31.960 に答える
12
db.SomeTable.Where(x => new[] {2,3,4,5}.Contains(x));

また

from x in db.SomeTable
where new[] {2,3,4,5}.Contains(x)
于 2010-02-25T13:47:25.913 に答える
9

Intersect と Except はもう少し簡潔で、おそらくもう少し高速になるでしょう。

collection.Intersect(new[] {2,3,4,5});

ありませんで

collection.Except(new[] {2,3,4,5});

また

IN のメソッド構文

collection.Where(x => new[] {2,3,4,5}.Contains(x));

およびNOT IN

collection.Where(x => !(new[] {2,3,4,5}.Contains(x)));
于 2014-07-11T10:17:52.620 に答える
3

IEnumerable<T>.Contains(T)ステートメントは、あなたが探していることを実行する必要があります。

于 2010-02-25T13:46:35.930 に答える
2

.Contains() を使用した非常に基本的な例

List<int> list = new List<int>();
for (int k = 1; k < 10; k++)
{
    list.Add(k);
}

int[] conditionList = new int[]{2,3,4};

var a = (from test in list
         where conditionList.Contains(test)
         select test);
于 2010-02-25T13:52:53.797 に答える
1

ヘルプメソッドを書くことができます:

    public bool Contains(int x, params int[] set) {
        return set.Contains(x);
    }

ショートコードを使用します:

    var resultset = from x in collection
                    where Contains(x, 2, 3, 4, 5)
                    select x;
于 2010-02-25T13:53:48.770 に答える
0

以下は、値のリスト内の値を検索するために使用できる一般的な拡張メソッドです。

    public static bool In<T>(this T searchValue, params T[] valuesToSearch)
    {
        if (valuesToSearch == null)
            return false;
        for (int i = 0; i < valuesToSearch.Length; i++)
            if (searchValue.Equals(valuesToSearch[i]))
                return true;

        return false;
    }

これは次のように使用できます。

int i = 5;
i.In(45, 44, 5, 234); // Returns true

string s = "test";
s.In("aa", "b", "c"); // Returns false

これは、条件ステートメントで便利です。

于 2015-03-06T06:58:16.533 に答える