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

如何筛选List<MainObjectClass>并清理嵌套CarIds列表元素

解决方案

方法一:原地修改原列表及对象

这种方式直接对原列表和其中的对象进行修改,无需创建新的对象实例:

// 1. 移除所有CarIds不包含10001的MainObjectClass
response.RemoveAll(item => !item.CarIds.Contains(10001));

// 2. 遍历保留的对象,清理CarIds仅保留10001
foreach (var item in response)
{
    // 因10001在集合中唯一,直接替换为仅含该元素的列表
    item.CarIds = new List<int> { 10001 };
    
    // 若不想重新创建List,也可以用RemoveAll移除其他元素:
    // item.CarIds.RemoveAll(id => id != 10001);
}

方法二:用LINQ生成新列表(非原地操作)

如果希望生成全新的对象列表而非修改原对象,可使用LINQ组合筛选与投影:

response = response
    .Where(item => item.CarIds.Contains(10001))
    .Select(item => new MainObjectClass
    {
        Id = item.Id,
        Name = item.Name,
        CarIds = new List<int> { 10001 }
    })
    .ToList();

关键说明

你之前的代码存在类型错误:List.RemoveAll()返回的是被移除元素的数量(int类型),不能直接赋值给List<MainObjectClass>类型的response。

两种方法均能满足你的场景需求:

  • 场景1:保留对象,CarIds维持仅含10001的状态;
  • 场景2:保留对象,CarIds仅保留10001;
  • 场景3:对象被从主列表中移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:34:57