以字母[C#]开头,打破按字母顺序排列的列表

时间:2011-12-05 06:44:20

标签: c# string list alphabetical

我有一个列表,它已按字母顺序排序。我想把它分成对应于字母开头的部分,如下所示:

A

  • aListItem1
  • aListItem2
  • aListItem3

  • bListItem1
  • bListItem2
  • bListItem3

C

  • cListItem1
  • cListItem2
  • cListItem3

...

我可以这样做:

列表中的foreach项目   如果item starts With A   ... 做一点事   如果项目开始与B   ... 做一点事   如果item starts with C   ......做点什么

等...

但有更简洁的方法吗?

3 个答案:

答案 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};