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

如何使用LINQ从字典列表中筛选唯一的TKey

如何用LINQ从字典列表中筛选唯一键?

嘿,要从你这个List<IDictionary<string, string>>里找出所有唯一的字典键,用LINQ组合几个方法就能轻松搞定,我给你拆解几种常见的场景:

  • 基础版(默认区分大小写)
    先把所有字典的键平铺成一个序列,再用Distinct()自动去重就行:

    var uniqueKeys = dictionaries
        .SelectMany(dict => dict.Keys) // 把每个字典的键拆成单个元素,合并成一个大序列
        .Distinct(); // 去除重复的键
    

    这里默认是严格区分大小写的,比如"Name"和"name"会被当成两个不同的键。

  • 不区分大小写的去重
    如果需要忽略大小写差异,给Distinct()传一个字符串比较器就行:

    var uniqueKeysIgnoreCase = dictionaries
        .SelectMany(dict => dict.Keys)
        .Distinct(StringComparer.OrdinalIgnoreCase);
    

    用OrdinalIgnoreCase是比较推荐的,它不依赖系统文化,只单纯忽略大小写;要是需要适配当前系统的文化规则,也可以换成StringComparer.CurrentCultureIgnoreCase。

  • 转成列表(按需使用)
    如果最后需要的是List<string>类型的结果,在链尾加个ToList()就行:

    var uniqueKeyList = dictionaries
        .SelectMany(dict => dict.Keys)
        .Distinct()
        .ToList();
    
  • 安全版(处理可能的null字典)
    要是列表里可能存在null的字典对象,记得先过滤掉,避免空引用异常:

    var uniqueKeysSafe = dictionaries
        .Where(dict => dict != null) // 先排除null的字典
        .SelectMany(dict => dict.Keys)
        .Distinct();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:22:58