LINQ用于获取以相同字符开头的IEnumerable <string>的所有条目

时间:2016-10-25 04:11:19

标签: c# linq

我收到了IEnumerable<string>,我希望收集所有以相同字符开头的条目 例如:

Hans
Hannes
Gustav
Klaus
Herbert
Hanne

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

1 个答案:

答案 0 :(得分:3)

您只需使用.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));