19

私はList<int>とを持っていList<customObject>ます。customObject クラスには ID プロパティがあります。List<customObject>ID プロパティがList<int>using LINQにあるオブジェクトのみを含むを取得するにはどうすればよいですか?

編集:Konradsの回答は読みやすく/直感的であるため、受け入れました。

4

6 に答える 6

16
var result = from o in objList where intList.Contains(o.ID) select o
于 2008-09-01T11:56:21.190 に答える
15
using System.Linq;

objList.Where(x => intList.Contains(x.id));
于 2013-11-04T10:27:48.760 に答える
10

私は今、同様の問題を抱えており、以下の解決策を使用しました。オブジェクトのリストが既にある場合は、int リストにないものをすべて削除して、一致するものだけを objList に残すことができます。

objList.RemoveAll(x => !intList.Contains(x.id));
于 2009-09-29T11:31:07.200 に答える
6

未テストですが、次のようになります。

var matches = from o in objList 
                  join i in intList on o.ID equals i
                  select o;

@Konradはそれをテストしたところ、うまくいきました - 「i」ではなく「i.ID」と書いたところにタイプミスがありました。

于 2008-09-01T11:51:34.073 に答える
2

完全を期すために (おそらく読みやすいのでしょうか?)、Matt の「join」に似た「where」を使用します。

var matches = from o in customObjectList
              from i in intList
              where o.ID == i
              select o;
于 2008-10-01T18:04:50.597 に答える
0

リスト内の項目数が 49 を超える場合、contains の代わりに join を使用しても機能しないことに注意してください。次のエラーが表示されます。Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.

于 2011-08-05T20:07:45.930 に答える