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

使用Linq按条件过滤对象列表 按RegionName筛选指定区域数据

错误原因

你原有代码的问题有两点:

  1. List.ForEach() 方法返回值为void,无法将其执行结果转为List<CasesDto>赋值给data变量,所以会触发类型不匹配报错
  2. 你仅调用了Where做筛选,没有将筛选结果重新赋值给CasesDto的Region属性,筛选逻辑本身也不会生效

实现方案

方案1:直接修改原有集合对象

如果不需要保留原始数据,直接遍历修改每个CasesDto的Region属性即可:

// 替换为你要筛选的区域名
string targetRegion = "ce";
data.ForEach(x => 
{
    x.Region = x.Region.Where(t => t.RegionName == targetRegion).ToList();
});

执行后data里的每个元素的Region列表就只会保留符合条件的项。

方案2:生成新的筛选集合(不修改原始数据)

如果需要保留原始的data数据不变,可以用Select投影生成全新的结果集合:

string targetRegion = "ce";
List<CasesDto> filteredData = data.Select(x => new CasesDto
{
    Date = x.Date,
    Region = x.Region.Where(t => t.RegionName == targetRegion).ToList()
}).ToList();

提示:如果你的业务场景里Region属性可能为null,可以在筛选前加判空逻辑,避免空引用异常,例如:

x.Region = x.Region?.Where(t => t.RegionName == targetRegion).ToList() ?? new List<RegionData>();

内容的提问来源于stack exchange,提问作者Amadej Šenk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:45:02