0

ID のリストを含む int リストがあるとします。linq テーブルがあり、特定の列を返したいのですが、linq テーブルの ID が int リスト内の ID のいずれかと等しい場合のみです。

これまでのところ、私は持っています:

dc.tb_References.SelectMany(n => n.ID == ids).ToList();

SQLでは、次のように記述します。

SELECT Column_Name from Table where ID in (1,2,3,4)

グーグルで検索しましたが、探しているものが見つかりません。誰にもヒントはありますか?私はラムダ式に固執したいと思います。

4

6 に答える 6

5

ID リストに対してContains()メソッドを使用できます。

dc.tb_References.Where(item => ids.Contains(item.ID)).ToList();
于 2012-05-23T09:08:24.157 に答える
4

これを試して

dc.tb_References.Where(n => ids.Contains(n.ID)).ToList();
于 2012-05-23T09:09:30.437 に答える
2

Whereメソッドでメソッドを使用しますContains

dc.tb_References
    .Where(n => theListOfIds.Contains(n.ID))
    .Select(x => x.Column_Name)
    .ToList();

またはあなたが行うことができます:

var query = from item in dc.tb_References
            where theListOfIds.Contains(item.ID)
            select item.Column_Name;

var list = query.ToList();

SelectMany は、サブリストからアイテムを選択し、これらすべてのアイテムをリストとして返すために使用されます。

Fruit.Items:   Apple, Pear
Veggies.Items: Carrot, Cabbage

List.Items: Fruit, Veggies

List.Items.SelectMany(x => x.Items)

結果:

Apple, Pear, Carrot, Cabbage
于 2012-05-23T09:11:30.600 に答える
0

これはあなたが求めているものですか?

int[] myIds = {1,4,5,3};
List<int> list = new List<int>();

list.Add(1);
list.Add(5);
list.Add(8);
list.Add(9);
list.Add(10);
list.Add(12);


List<int> select = (from l in list where myIds.Contains(l) select l).ToList();
于 2012-05-23T09:12:23.017 に答える
0

IN 句を生成するContainsには、コレクションのメソッドを呼び出し、そのメソッドに検索するオブジェクトのプロパティを渡す必要があります。

var ids = new int[] { 1, 3 };
var query = from n in dc.tb_References 
            where ids.Contains(n.ID) 
            select n;

生成された SQL (LinqPad から) は次のとおりです。

DECLARE @p0 Int = 1
DECLARE @p1 Int = 3

SELECT [t0].[ID], [t0].[Foo], [t0].[Bar]
FROM [tb_References] AS [t0]
WHERE [t0].[ID] IN (@p0, @p1)
于 2012-05-23T09:12:06.590 に答える
0
int ids = new int[]{1,2,3,4};
var list =  (from d in dc.tb_References
             where ids. Contains(d.ID)
             select d. Column_Name).ToList();
于 2012-05-23T09:17:58.197 に答える