我有一个列表,它已按字母顺序排序。我想把它分成对应于字母开头的部分,如下所示:
A
乙
C
...
我可以这样做:
列表中的foreach项目 如果item starts With A ... 做一点事 如果项目开始与B ... 做一点事 如果item starts with C ......做点什么
等...
但有更简洁的方法吗?
答案 0 :(得分:3)
您可以使用Linq GroupBy方法创建部分:
foreach (var group in list.GroupBy(i => i[0]))
{
Console.WriteLine("Section: " + group.Key);
foreach (var elt in group)
{
Console.WriteLine(elt);
}
}
答案 1 :(得分:2)
随时跟踪当前的第一个字母:
char first = '\0';
foreach(string item in list){
if(item[0] != first){
first = item[0];
Console.WriteLine(first);
}
Console.WriteLine(" * " + item);
}
答案 2 :(得分:1)
var list = new List<string>() {"a1", "a2", "b1", "b2"};
var grouped = from item in list
group item by item.First() into g
select new {StartsWith = g.Key, Items = g};