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

C#嵌套列表筛选未返回预期结果,求问题排查

问题出在哪

你写的代码是筛选包含至少一个匹配Skill的Test对象,而不是对Test里的Skills列表做过滤。所以返回的是原Test对象(这个Test确实有符合条件的Skill),但它的Skills还是原来完整的4项,并没有被过滤,这才导致你看到返回了全部Skill。

正确写法

根据你的需求,两种常见实现方式:

要保留Test结构,只留匹配的Skill

需要重新构造Test对象,把内部的Skills过滤后赋值:

var searchTerm = "Java";

var filteredList = list
    .Where(t => t.Skills.Any(s => s.SkillName.Contains(searchTerm)))
    .Select(t => new Test 
    {
        Name = t.Name,
        Skills = t.Skills.Where(s => s.SkillName.Contains(searchTerm)).ToList()
    })
    .ToList();

直接拿所有匹配的Skill(不需要Test结构)

把所有Test的Skills合并后再筛选:

var searchTerm = "Java";

var filteredSkills = list
    .SelectMany(t => t.Skills)
    .Where(s => s.SkillName.Contains(searchTerm))
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:15:38