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

如何获取移除指定Id元素后的列表?List.RemoveAll使用疑问

解决列表移除指定Id元素后获取目标列表的问题

嘿,我完全懂你的困扰!其实你可能误解了List.RemoveAll()的工作方式——它本身就是直接修改原列表的,返回的那个整数只是告诉你这次操作一共删掉了多少个元素,不是说它不修改列表哦。

举个实际的代码例子,假设你的对象结构是这样的:

public class MyDataObject
{
    public int Id { get; set; }
    // 这里可以加其他你需要的属性
}

那你可以这么处理:

  1. 直接修改原列表(推荐,性能更好)

    // 你的原始对象列表
    List<MyDataObject> originalList = GetYourInitialList();
    // 需要移除的Id集合
    List<int> targetIds = new List<int> { 3, 6, 9 };
    
    // 调用RemoveAll,它会原地删掉符合条件的元素
    int removedItemCount = originalList.RemoveAll(item => targetIds.Contains(item.Id));
    
    // 现在originalList就是已经移除目标元素后的列表了!
    // 那个removedItemCount只是告诉你删了多少个,不用管它也能拿到修改后的列表
    
  2. 生成新列表(不修改原列表)
    如果不想动原来的列表,想用一个全新的列表存结果,那可以用Linq的Where筛选后转成列表:

    List<MyDataObject> newFilteredList = originalList
        .Where(item => !targetIds.Contains(item.Id))
        .ToList();
    

    注意这种方式要记得引用System.Linq命名空间哦。

简单总结下:

  • 用RemoveAll的话,原列表就是修改后的结果,不用额外获取;
  • 要新列表就用Linq筛选,一步到位生成。

内容的提问来源于stack exchange,提问作者Connie DeCinko CS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:00:31