如果我有两个列表并且我想创建一个新的第三个列表,它只包含两个列表中的公共(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/