Q
獲取不同類型
1
A
回答
3
提出將無法很好地擴展爲您列出的大小隨着對方回答。一個簡單的更改使其更具性能是將異常列表轉換爲HashSet。如果ID屬性是一個整數,它會是這個樣子:
var exceptIds = new HashSet<int>(list2.Select(y => y.Id).Distinct());
var unmatched = list1.Where(x => !exceptIds.Contains(x.Id)).ToList();
unmatched.Dump(); // LinqPad method, to see output
如果ID的類型是別的東西,只需將它替換到第一線爲泛型類型參數。或者,您也可以使用左連接技術生成相同的不匹配輸出,就像SQL中的「查找不匹配的記錄」查詢一樣。
var unmatched = (from item in list1
join item2 in list2 on item.Id equals item2.Id into grp
from x in grp.DefaultIfEmpty()
where x == null
select item).ToList();
的[從另一個由拉姆達排除集合]
+0
這確實是正確的答案。 –
1
這個怎麼樣:
var exceptIds = list2.Select(y => y.Id).Distinct().ToList();
list1 = list1.Where(x => !exceptIds.Contains(x.Id)).ToList();
+0
它工作正常。這個linq操作有任何性能問題嗎? –
+0
我改正了答案,現在已經足夠優化了。 –
相關問題
- 1. 獲取與不同類型
- 2. 獲取/設置不同類型的
- 3. 獲取不同類型的變量
- 4. 從datacontext獲取不同的表名時獲取表類型
- 5. Lucene.Net - 獲取不同類別
- 6. 獲取類型的類型
- 7. 獲取泛型類類型
- 8. 如何從匿名類中獲取不同類型的數據
- 9. 獲取類型
- 10. 獲得同類型
- 11. 不同類型
- 12. 不同類型
- 13. 獲取動態類型的類類型?
- 14. 獲取泛型類的類的類型?
- 15. 不同類型不同RelationshipEntities
- 16. 獲取泛型類型
- 17. 獲取泛型類
- 18. 獲取UIView類型
- 19. 獲取該類型
- 20. 獲得不同的數據類型
- 21. 捕獲不同的異常類型
- 22. 根據菜單選項獲取不同類型的html輸出
- 23. 在Swift中獲取和設置不同的數據類型
- 24. 從IEnumerable獲取兩種不同數據類型的幫助
- 25. 無法從Scala中的不同包中獲取類型
- 26. 索引器獲取並設置不同的類型
- 27. 從工廠獲取不同的返回類型對象
- 28. 根據數據類型獲取不同的結果集
- 29. 從in64數據類型中獲取不同的對象返回
- 30. 從不同數據類型的ArrayList獲取最高編號
可能的複製(http://stackoverflow.com/questions/9748138/exclude-a-collection-from-another-by-lambda) – piotrwest
看一看Jon Skeets在這裏回答:http://stackoverflow.com/questions/9748138/exclude-a-collection-from-another-by-lambda – Robban
本文假設這兩個列表是相同的類型,不是嗎? –