按开头字母[c#]列出按字母顺序排列的列表

本文关键字:顺序 列表 排列 开头 | 更新日期: 2023-09-27 18:16:59

我有一个列表,它已经按字母顺序排序了。我想按照开头字母的顺序把它分成几个部分,像这样:

  • aListItem1
  • aListItem2
  • aListItem3

  • bListItem1
  • bListItem2
  • bListItem3

C

  • cListItem1
  • cListItem2
  • cListItem3

我可以这样做:

for list中的每一项如果项目以A开头... 做某事如果项目以B开头... 做某事如果项目以C开头... 做一些

等等……

但是是否有更简洁的方法来做到这一点?

按开头字母[c#]列出按字母顺序排列的列表

您可以使用Linq GroupBy方法来创建您的section:

foreach (var group in list.GroupBy(i => i[0]))
{
   Console.WriteLine("Section: " + group.Key);
   foreach (var elt in group)
   {
      Console.WriteLine(elt);
   }
}

记住当前的第一个字母:

char first = ''0';
foreach(string item in list){
     if(item[0] != first){
         first = item[0];
         Console.WriteLine(first);
     }
     Console.WriteLine("  *  " + item);
}
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};