我收到了IEnumerable<string>
,我希望收集所有以相同字符开头的条目
例如:
Hans
Hannes
Gustav
Klaus
Herbert
Hanne
现在我想查找所有第一个2
字符相同的条目,这些字符将返回Hans, Hannes, Hanne
。
答案 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));