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

如何使用LINQ筛选Color属性与指定颜色集合存在匹配的Product集合

问题原因

你原先的代码逻辑是判断Product的整个Color拼接字符串是否完全等于筛选集合中的某一项,自然无法匹配到包含多个颜色的Color属性值。

正确实现方案

仅用LINQ就可以实现需求,核心是拆分Color属性后判断是否和筛选集合有交集:

Products = Products.Where(p => 
    // 拆分Color属性并自动去除每个颜色前后的空格
    p.Color.Split(',', StringSplitOptions.TrimEntries)
    // 判断拆分后的颜色是否有任意一个存在于筛选集合中
    .Any(splitColor => colorsForFiltering.Contains(splitColor))
);

兼容场景补充

  1. 低版本.NET不支持StringSplitOptions.TrimEntries的话,替换为拆分后手动去空格即可:
Products = Products.Where(p => 
    p.Color.Split(',')
        .Select(c => c.Trim())
        .Any(splitColor => colorsForFiltering.Contains(splitColor))
);
  1. 需要忽略大小写匹配的话,修改匹配逻辑:
Products = Products.Where(p => 
    p.Color.Split(',', StringSplitOptions.TrimEntries)
        .Any(splitColor => colorsForFiltering.Contains(splitColor, StringComparer.OrdinalIgnoreCase))
);
  1. 如果是EF Core等ORM场景下查询数据库,拆分字符串的操作可能无法被翻译为SQL,内存中筛选完全可以用以上方案,数据库查询建议提前确认对应ORM的函数支持情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:21:03