0

linq (sql の「where in」) を使用して関連付けられた検索を使用する方法を教えてください。

Linq ここで検索が続くところ、

1. select * from tablename where code = 'code1'
`string[] numbers = { "one", "two", "three", "four" };

string searchNumber = "two";
var number = from number1 in numbers
                     where number1 == searchNumber
                     select number1;

foreach (var n in number)
    Console.WriteLine(n);

        Console.ReadLine();`

LINQ を使用してコードのセットを検索する方法は?

2. select * from tablename where code in ('code1','code2')
4

5 に答える 5

2

最初の回答にはこれを使用します

var result = tablename.Where(x => x.code == "code1");

2番目の回答にはこれを使用します

List<string> str = new List<string>(){ "code1" , "code2" };

var result = tablename.Where(x => str.Contains(x.code));
于 2012-08-09T12:23:08.230 に答える
1

の行に沿って何かを試してみてください..

string[] codes = { "code1", "code2" };
var selections = tablename.Where(x => codes.Contains(x.code));
于 2012-08-09T12:22:21.503 に答える
0

それはあなたが何に反対するかによって異なります。Entity Framework を使用している場合は、In ステートメントの作成を検索する必要があります。IEnumerable に対して Linq を使用しているだけの場合は、contains で目的の処理が実行されます。

これは、データベースに対してこれを実行する場合、プロバイダーが Contains を実装している必要があるためです。Entity Framework は IIRC をサポートしていません。

于 2012-08-09T12:22:37.450 に答える
0

これについての考え方を逆転させる必要があります。numbers.Contains(searchNumber) かどうかを確認します。何かのようなもの:

var result = from n in numbers
                 where numbers.Contains(searchNumber)
                 select n;
于 2012-08-09T12:26:23.740 に答える
0
string[] searchNumber = {"two","one"};
        var number = from number1 in numbers
                     where searchNumbers.Contains(number1)
                     select number1;

        foreach (var n in number)
        {
            Console.WriteLine(n);
        }

        Console.ReadLine();

これでうまくいくはずです。

于 2012-08-09T12:21:17.427 に答える