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

如何从存储逗号分隔字符串的VersionKeys模型中筛选含指定Key的项?

问题分析与修正

你当前的代码逻辑存在错误,导致无法正确筛选出包含指定Key的记录。原代码的Where条件是检查整个列表的keys字符串集合中是否存在等于目标Key的项,而非检查单个记录的keys字符串中是否包含目标Key,且未处理逗号分割的单个Key精确匹配问题。

修正方案

要准确筛选出包含指定单个Key的记录,需要将每个记录的keys字符串按逗号分割为单个Key的集合,再判断该集合是否包含目标Key。

修正后的完整代码

using System;
using System.Linq;
using System.Collections.Generic;
                    
public class Program
{
    public static void Main()
    {
        List<VersionKeys> VersionKeysList = new List<VersionKeys>
            {
                new VersionKeys { Id = 1, keys = "A,b,c,d" },
                new VersionKeys { Id = 2, keys = "d" },
            };
        
        string targetKey = "c";
        
        // 筛选逻辑:分割当前记录的keys,检查是否包含目标Key
        var matchedKeys = VersionKeysList
            .Where(item => item.keys.Split(',').Contains(targetKey))
            .Select(item => item.keys)
            .FirstOrDefault();
        
        Console.WriteLine(matchedKeys); // 输出:A,b,c,d
    }
}

public class VersionKeys
{
    public int Id { get; set; }
    public string keys { get; set; }
}

关键修正点

  • 变量命名优化:将原列表名VersionKeys改为VersionKeysList,避免与类名冲突,提升代码可读性。
  • 筛选逻辑修正:使用item.keys.Split(',')将逗号分隔的字符串拆分为单个Key的数组,再用Contains(targetKey)检查是否包含目标Key,确保是精确匹配单个Key。
  • 链式调用调整:先通过Where筛选符合条件的对象,再通过Select提取keys字段,逻辑更清晰。

如果需要忽略大小写匹配(比如匹配"C"也能找到"A,b,c,d"),可以修改判断逻辑:

.Where(item => item.keys.Split(',').Any(key => key.Equals(targetKey, StringComparison.OrdinalIgnoreCase)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:40:06