技术问询:使用LINQ查找string类型List1中存在于List2的元素及移除私有代码
使用LINQ查找两个字符串集合的交集元素
嘿,这就帮你搞定这两个需求:
一、用LINQ筛选list1中存在于list2的元素
有两种实用的方式可以实现这个功能,根据你的需求选就行:
- 方法1:用
Intersect直接求交集
这是LINQ专门为集合交集场景设计的方法,简洁高效,还会自动去重,代码示例如下:
List<string> list1 = new List<string> { "apple", "banana", "orange", "grape" }; List<string> list2 = new List<string> { "banana", "grape", "mango" }; // 获取同时存在于两个集合的元素 var commonElements = list1.Intersect(list2).ToList();
- 方法2:
Where+Contains(支持保留重复项)
如果list1里有重复元素,你想把所有匹配的都保留下来,就用这种方式。要是list2元素比较多,建议转成HashSet来提升查找速度:
// 基础版(小数据量适用) var commonElements = list1.Where(item => list2.Contains(item)).ToList(); // 优化版(大数据量推荐) var list2HashSet = new HashSet<string>(list2); var commonElements = list1.Where(item => list2HashSet.Contains(item)).ToList();
二、私有代码处理说明
相关私有代码已经按照要求移除,不会在回答中展示。
内容的提问来源于stack exchange,提问作者user7739249
相关产品推荐
相关产品推荐

