c# - 选择两个列表中常见的元素哪个更有效?

标签 c# linq list where-in

如果我有两个列表并且我想创建一个新的第三个列表,它只包含两个列表中的公共(public)元素(查询中的一个位置)可以使用此代码:

var listC = listB.Join(listA, b => b.ObjectAId, a => a.Id, (b, a) => b).ToList();

这种方式的复杂度为 O(n)。

但是,我也可以这样使用一个选择方法:

var lstC = listA.Where(r => listB.Contains(r).ToList();

这第二种方式也是O(n)吗?

如果这两种方式具有相同的效率,它们之间有哪些区别?

谢谢。

最佳答案

var listC = listA.Intersect(listB); // perhaps a .ToList() on the end

这将使用散列来使其尽可能便宜。

关于c# - 选择两个列表中常见的元素哪个更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17007923/

相关文章:

python - 在二维列表中查找最常见的字符串

c# - PropertyGrid:隐藏基类属性,如何?

c# - 人与人之间的金钱分数划分和一分钱的分数?

c# - Linq 列表包含方法

C# XML 查找第一个元素后代

algorithm - 查找所有集不包含任何子集

r - 有效分割字符向量

c# - iframe 中元素的 getElementById

C# 设置项目输出自动以管理权限启动

c# - 使用 linq 根据另一个列表的属性从列表中删除对象