C# 如何从List<string>中筛选仅存在大小写不匹配的重复字符串
实现方案
核心思路
- 第一步:使用不区分大小写的字符串比较器对列表分组,让大小写不同的同源字符串进入同一分组
- 第二步:对每个分组做区分大小写的去重,若去重后元素数量>1,说明该分组存在大小写不一致的重复项
- 第三步:提取符合条件的分组结果即可
可运行代码
private void btnSearchAndFlag_Click(object sender, RoutedEventArgs e) { List<string> stList = new List<string>() { "Chassis", "chassis", "ABC", "ABC", "Chassis" }; var result = stList // 按不区分大小写分组,同源字符串归入同一组 .GroupBy(x => x, StringComparer.OrdinalIgnoreCase) // 过滤规则:组内区分大小写去重后数量大于1,即存在大小写不一致的重复 .Where(g => g.Distinct(StringComparer.Ordinal).Count() > 1) // 取分组Key,默认是组内第一个出现的字符串的大小写形式,符合示例返回"Chassis"的需求 .Select(g => g.Key) .ToList(); }
扩展说明
用提供的示例输入运行上述代码,最终得到的result列表仅包含"Chassis",完全符合需求。如果需要返回同一个分组下所有不同大小写形式的字符串,只需把Select逻辑替换为SelectMany(g => g.Distinct(StringComparer.Ordinal))即可。
内容的提问来源于stack exchange,提问作者nikhil
相关产品推荐
相关产品推荐

