我有一個List<int>
和List<customObject>
。 customObject類有一個ID屬性。我如何才能獲得僅包含使用LINQ的ID屬性在List<int>
中的對象的List<customObject>
?過濾linq名單的財產價值
編輯:我接受Konrads的答案,因爲它更容易/更直觀地閱讀。
我有一個List<int>
和List<customObject>
。 customObject類有一個ID屬性。我如何才能獲得僅包含使用LINQ的ID屬性在List<int>
中的對象的List<customObject>
?過濾linq名單的財產價值
編輯:我接受Konrads的答案,因爲它更容易/更直觀地閱讀。
var result = from o in objList where intList.Contains(o.ID) select o
未經檢驗的,但它會是這樣的:
var matches = from o in objList
join i in intList on o.ID equals i
select o;
@Konrad只是測試它,和它的工作 - 我只是在那裏我會寫「i.ID」,而不是一個錯字「一世」。
只是爲了完整性(也許更容易閱讀?),用「裏」類似於馬特的「加盟」:
var matches = from o in customObjectList
from i in intList
where o.ID == i
select o;
我有過類似的問題,剛纔和使用低於解決方案如果已經有對象列表,則可以刪除int列表中找不到的所有對象,只留下objList中的匹配項。
objList.RemoveAll(x => !intList.Contains(x.id));
請注意,使用連接而不是包含列表中的項目數量超過49時不起作用!你會得到錯誤:Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.
using System.Linq;
objList.Where(x => intList.Contains(x.id));
是不是Linq`.Where`方法更簡潔? (請參閱下面的答案) – 2013-11-07 13:24:58