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

如何用C# LINQ查找并移除List重复项(按指定规则保留)

使用C# LINQ实现配置文件列表的去重筛选

原始集合:

var mylist = new List<string>(){"itemA.config","itemA.en-us.config","itemB.config","itemC.config", "itemC.en-us.config","itemC.fa-ir.config"};

筛选规则

  • 按文件核心前缀分组(例如itemA、itemB、itemC为同一组)
  • 每组优先保留带fa-ir后缀的配置项
  • 若组内无fa-ir项,则保留不带区域后缀的基础配置项(即*.config格式)

LINQ实现代码

var result = mylist
    .GroupBy(item => 
        // 提取核心前缀:两次移除后缀,得到不带区域和.config的基础名称
        Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(item))
    )
    .Select(group => 
        // 优先筛选fa-ir项,无匹配则选基础config项
        group.FirstOrDefault(x => x.EndsWith(".fa-ir.config")) 
        ?? group.First(x => x.Split('.').Length == 2)
    )
    .ToList();

逻辑说明

  1. 分组逻辑:通过两次调用Path.GetFileNameWithoutExtension,剥离文件名的区域后缀和.config后缀,提取出核心前缀作为分组依据,确保同前缀的文件被归为一组。
  2. 组内筛选:对每个分组,先尝试匹配.fa-ir.config结尾的项;如果没有找到,就选择仅包含一个.的文件(即xxx.config格式的基础项),适配通用场景下的区域后缀判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:01:01