0

私はリストを持っています、それはすでにアルファベット順にソートされています。次のように、文字が始まる部分に対応するセクションに分割したいと思います。

  • aListItem1
  • aListItem2
  • aListItem3

B

  • bListItem1
  • bListItem2
  • bListItem3

C

  • cListItem1
  • cListItem2
  • cListItem3

...

私は次のようなことができます:

リスト内の foreach 項目 if item startsWith A ... 項目が始まる場合何かをするWith B ... 項目が始まる場合何かをするWith C ... 何かをする

等...

しかし、これを行うためのより簡潔な方法はありますか?

4

3 に答える 3

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);
   }
}
于 2011-12-05T06:50:39.673 に答える
2

進行中の最初の文字を追跡するだけです。

char first = '\0';
foreach(string item in list){
     if(item[0] != first){
         first = item[0];
         Console.WriteLine(first);
     }

     Console.WriteLine("  *  " + item);
}
于 2011-12-05T06:45:24.307 に答える
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};
于 2011-12-05T06:59:32.203 に答える