c# - LINQ 获取以相同字符开头的 IEnumerable<string> 的所有条目

标签 c# linq

我得到一个 IEnumerable<string>我想收集所有以相同字符开头的条目。
例如:

Hans
Hannes
Gustav
Klaus
Herbert
Hanne

现在我想找到第一个 2 所在的所有条目字符相同,将返回 Hans, Hannes, Hanne .

最佳答案

你只需要使用.GroupBy

list.GroupBy(x=>x.Substring(0, n)).OrderByDescending(x=>x.Count()).First()

其中 n 是您要比较的字符数。

还可以添加一个 Where 来过滤您可能有的任何要求:

list.GroupBy(x=>x.Substring(n))
   .Where(x=>x.Count() > 1)
   .OrderByDescending(x=>x.Count())
   .First()

完整示例:

     var lst = new string[]
     {
        "Hans",
        "Hannes",
        "Gustav",
        "Klaus",
        "Herbert",
        "Hanne"
     };
     var source = lst.GroupBy(x => x.Substring(0, 2)).OrderByDescending(x => x.Count()).First()
     Console.WriteLine(source.Key);
     Console.WriteLine(string.Join(",", source));

关于c# - LINQ 获取以相同字符开头的 IEnumerable<string> 的所有条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40231250/

相关文章:

sql - System.Void' 不是映射存储过程方法的有效返回类型

c# - 下载当前 WSJ.com 最优惠利率

c# - 仅当记录不存在时才通过存储过程从 TVP 列表中插入项目 - 性能低下

linq - MonoDroid、SQLite 和 LINQ

c# - 对具有复杂类型的多个属性进行 GroupBy

c# - JOIN 对象集合的多个属性的正确方法?

c# - 如何在 C# 中实现动态 OData 客户端?

c# - 是否可以在 C# 中为泛型创建 "this type"?

c# - 如何检查 XAML 元素是否支持 AutomationId 属性

c# - List<T> 连接 'X' 个列表数量