相交两个List有重复值的

本文关键字:int List 两个 | 更新日期: 2023-09-27 18:05:23

我有两个int类型的列表:

List<int> list1 = new List<int> {12,55,55,55,34};
List<int> list2 = new List<int> {12,55};

如果我让list1和list2相交,那么预期的结果是{12,55,55,55}

我怎样才能做到这一点?还有其他方法可以达到同样的效果吗?

相交两个List<int>有重复值的

试试这个:

List<int> result = list1.Where(i => list2.Contains(i)).ToList();

所做的是只选择list1中存在于list2中的记录,这将导致IEnumerable<int>。然后,ToList()将其变回List<int>

性能方面的最佳版本是在调用Contains之前将list2转换为HashSet<int>。这允许更快的查找:

HashSet<int> hashSet = new HashSet<int>(list2);
List<int> result = list1.Where(i => hashSet.Contains(i)).ToList();