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

C#中如何处理多颜色枚举值的Linq筛选问题

处理多颜色枚举筛选的Linq实现

原代码仅支持单个颜色字符串的解析与筛选,要处理逗号分隔的多颜色输入,可按以下逻辑修改方法:

  1. 将输入字符串按逗号分割,同时去除每个颜色项的首尾空格(兼容"red, blue"这类带空格的输入)
  2. 批量解析分割后的字符串,筛选出能成功转为Colors枚举的有效值
  3. 使用Linq的Contains方法,一次性筛选出颜色匹配任意有效枚举值的结果

修改后的完整方法代码:

public void ColorInfo(string colorName)
{
    // 分割输入字符串,清理每个项的空格与空值
    var colorStrings = colorName.Split(',')
                                .Select(s => s.Trim())
                                .Where(s => !string.IsNullOrEmpty(s));

    // 批量解析为有效枚举值
    var targetColors = new List<Colors>();
    foreach (var s in colorStrings)
    {
        if (Enum.TryParse<Colors>(s, out var parsedColor))
        {
            targetColors.Add(parsedColor);
        }
    }

    // 存在有效颜色时执行筛选
    if (targetColors.Any())
    {
        question = question.Where(at => targetColors.Contains(at.Color));
    }
}

关键细节说明

  • 用Trim()处理分割后的字符串,避免因输入格式问题导致解析失败
  • 过滤空字符串,兼容用户输入"red,,blue"这类带无效分隔的场景
  • 用Contains替代原有的switch分支判断,无需为每个枚举值单独编写逻辑,扩展性更强
  • 先收集所有有效枚举值再执行筛选,避免多次遍历数据源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:56:01