私はList<int>
とを持っていList<customObject>
ます。customObject クラスには ID プロパティがあります。List<customObject>
ID プロパティがList<int>
using LINQにあるオブジェクトのみを含むを取得するにはどうすればよいですか?
編集:Konradsの回答は読みやすく/直感的であるため、受け入れました。
私はList<int>
とを持っていList<customObject>
ます。customObject クラスには ID プロパティがあります。List<customObject>
ID プロパティがList<int>
using LINQにあるオブジェクトのみを含むを取得するにはどうすればよいですか?
編集:Konradsの回答は読みやすく/直感的であるため、受け入れました。
var result = from o in objList where intList.Contains(o.ID) select o
using System.Linq;
objList.Where(x => intList.Contains(x.id));
私は今、同様の問題を抱えており、以下の解決策を使用しました。オブジェクトのリストが既にある場合は、int リストにないものをすべて削除して、一致するものだけを objList に残すことができます。
objList.RemoveAll(x => !intList.Contains(x.id));
未テストですが、次のようになります。
var matches = from o in objList
join i in intList on o.ID equals i
select o;
@Konradはそれをテストしたところ、うまくいきました - 「i」ではなく「i.ID」と書いたところにタイプミスがありました。
完全を期すために (おそらく読みやすいのでしょうか?)、Matt の「join」に似た「where」を使用します。
var matches = from o in customObjectList
from i in intList
where o.ID == i
select o;
リスト内の項目数が 49 を超える場合、contains の代わりに join を使用しても機能しないことに注意してください。次のエラーが表示されます。Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.