相交两个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> 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();