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

如何基于另一ID数组排除列表数据?求C#非迭代实现方案

基于ID数组排除列表元素的简便方法

当然有比手动迭代更优雅的实现方式!在C#中,我们可以借助LINQ或者List自带的方法快速完成这个需求,下面给你两种常用方案:

方案1:生成筛选后的新列表(LINQ Where)

如果你不想修改原列表,而是得到一个排除了目标元素的新列表,可以用Where结合Contains来筛选:

using System.Linq; // 记得引用LINQ命名空间

// 筛选出ID不在excludedCities中的城市,转换为新列表
var filteredCities = cities.Where(city => !excludedCities.Contains(city.ID)).ToList();

这个方法会遍历原列表,只保留那些ID不在排除数组里的元素,最后通过ToList()生成新的List<Cities>对象。

方案2:直接修改原列表(List.RemoveAll)

如果需要直接在原列表中移除符合条件的元素,RemoveAll方法会更高效——它不需要创建新集合,直接在原列表上完成删除操作:

// 从原列表中移除所有ID存在于excludedCities的城市
cities.RemoveAll(city => excludedCities.Contains(city.ID));

性能优化建议(针对大数据量场景)

如果你的excludedCities数组元素很多,数组的Contains方法是O(n)时间复杂度,多次调用会拖慢性能。这时候可以把数组转换成HashSet<int>,因为HashSet的Contains是O(1)的,能大幅提升效率:

var excludedIdSet = new HashSet<int>(excludedCities);

// 生成新列表的优化版
var filteredCities = cities.Where(city => !excludedIdSet.Contains(city.ID)).ToList();

// 直接修改原列表的优化版
cities.RemoveAll(city => excludedIdSet.Contains(city.ID));

这两种方案都比手动遍历+标记删除的写法简洁得多,而且可读性和维护性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:23:20