You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#及.NET 6中过滤两个列表的非匹配元素?

提取两个列表中的非匹配元素(C#实现)

你需要从listTwo中筛选出不存在于listOne的元素(即115、116)并存入filteredList,以下是几种实用的实现方式:

方法1:使用LINQ Except方法(最简洁)

Except方法直接返回第一个序列中不在第二个序列中的元素,适合需要自动去重的场景:

List<int> listOne = new List<int>() { 112, 113, 114 };
List<int> listTwo = new List<int>() { 112, 113, 114, 115, 116 };

List<int> filteredList = listTwo.Except(listOne).ToList();

注意:如果listTwo中有重复的非匹配元素(比如多个115),Except处理后结果只会保留一个该元素。

方法2:使用LINQ Where+Contains(保留重复元素)

如果需要保留listTwo中重复的非匹配元素,用Where配合Contains进行筛选:

List<int> filteredList = listTwo.Where(x => !listOne.Contains(x)).ToList();

方法3:手动遍历(无LINQ依赖)

不想依赖LINQ的话,直接遍历listTwo逐个判断元素是否符合条件:

List<int> filteredList = new List<int>();
foreach (int num in listTwo)
{
    if (!listOne.Contains(num))
    {
        filteredList.Add(num);
    }
}

性能优化(大数据量场景)

如果列表元素数量较多,List.Contains的查找效率较低(每次查找复杂度为O(n)),可以将listOne转为HashSet,把查找复杂度降为O(1):

HashSet<int> setOne = new HashSet<int>(listOne);
List<int> filteredList = listTwo.Where(x => !setOne.Contains(x)).ToList();

内容的提问来源于stack exchange,提问作者imuzz01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 18:27:09