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
本文假设这两个列表是相同的类型,不是吗? –