我有2個不同對象的列表,例如列表和列表。我想刪除第一個列表中第一個列表中某個字段的值與第二個列表中一個字段的值不匹配的所有對象。
例如,我想從第一個列表中刪除所有Type1對象,Type1.name(string)成員不匹配第二個列表中的Type2.id(string)成員。
LINQ可以嗎?LINQ從一個集合中移除與其他集合中元素不匹配的元素(基於字段)
1
A
回答
5
LINQ不是修改現有的集合 - 它是關於運行查詢。如果您需要更改的地方的列表,你可能想是這樣的:
HashSet<string> ids = new HashSet<string>(list2.Select(x => x.Id));
list1.RemoveAll(x => !ids.Contains(x.Name));
在「正常」的LINQ,你可以用做:
// I'm assuming no duplicate IDs in list2
var query = (from x in list1
join y in list2 on x.Name equals y.Id
select x).ToList();
0
您還可以使用拉姆達:
var query = (list1.Join(list2, x => x.Name, y => y.Id, (x, y) => x)).ToList();
或
var query = (Enumerable.Join(list1, list2, x => x.Name, y => y.Id, (x, y) => x)).ToList();
相關問題
- 1. Linq將元素從一個集合中移除到另一個集合中
- 2. 如何從基於其他元素的集合中檢索元素?
- 3. 基於集合元素匹配,或空集
- 4. LINQ c#集合中的唯一元素
- 5. 從集合ArrayList中返回一個元素,其中每個集合具有不同的元素類型
- 6. 包含元素和其他集合用於構造C++的集合的集合
- 7. 如何從集合中刪除元素?
- 8. 從集合中刪除N元素
- 9. LINQ關於從集合中選擇不同元素的建議
- 10. LINQ:從一個集合中獲取一系列元素
- 11. zf2表單集合驗證 - 字段集中的唯一元素
- 12. Linq:在集合中查找元素
- 13. 移除集合元素用下劃線
- 14. 配置元素集合節
- 15. scala如何交集和匹配集合中的元素
- 16. 暗號比賽,其中在另一個集合中的每個集合元素
- 17. 從集合中取出n個元素
- 18. 基於其他元素的值移除XML元素
- 19. 刪除集合中的元素
- 20. 刪除集合中的元素
- 21. Java:刪除集合中的元素
- 22. 集合元素的組合
- 23. Python,集合,比較同一集合中的兩個元素
- 24. 綁定一個ListBox到集合中的元素集合
- 25. 獲取基於Linq的其他集合的屬性的集合
- 26. LINQ:查詢集合是否包含另一個集合中的任何元素
- 27. 查找Linq中兩個集合中不同的子元素
- 28. 在jQuery中找到集合中元素的匹配值,並返回該元素
- 29. 如何裝飾ZF2集合中的字段集的元素?
- 30. 如何將一個元素及其所有元素放入一個集合中?