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

如何用C# LINQ筛选含ABC开头分类的玩具并保留对应分类

解决方案

我们可以通过LINQ的组合方法快速实现需求,核心是先筛选出符合条件的玩具,再对其分类列表做过滤处理。

代码实现

var filteredToys = toys
    // 筛选出至少包含一个ABC开头分类的玩具
    .Where(t => t.category.Any(c => c.Name.StartsWith("ABC", StringComparison.OrdinalIgnoreCase)))
    // 对每个符合条件的玩具,仅保留ABC开头的分类
    .Select(t => new Toy
    {
        name = t.name,
        category = t.category.Where(c => c.Name.StartsWith("ABC", StringComparison.OrdinalIgnoreCase)).ToList()
    })
    .ToList();

代码说明

  • 筛选玩具:用Where配合Any方法判断,只要玩具的分类列表里存在名称以"ABC"开头的项,就保留该玩具;StringComparison.OrdinalIgnoreCase用于忽略大小写匹配,不需要的话可以直接去掉。
  • 过滤分类:通过Select创建新的Toy对象,复制原玩具的名称,同时对分类列表再次过滤,只保留符合前缀要求的分类项。
  • 结果验证:执行后filteredToys仅包含teddy1,且它的分类列表只剩"ABC xxx"和"ABC zzz"两项。

可选修改方案(直接修改原对象)

如果允许修改原Toy对象的分类集合,也可以用以下方式:

var filteredToys = toys
    .Where(t => t.category.Any(c => c.Name.StartsWith("ABC")))
    .ToList();

foreach (var toy in filteredToys)
{
    toy.category = toy.category.Where(c => c.Name.StartsWith("ABC")).ToList();
}

内容的提问来源于stack exchange,提问作者O'Neil Tomlinson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:25:40