将字符串列表分成新列表,具体取决于其首字母

Wes*_*een 0 .net c# linq

我有一个国家/地区名称列表

Afghanistan
Albania
Bahamas, The
Bahrain
Cambodia
Cameroon
.
.
.
Run Code Online (Sandbox Code Playgroud)

我想要做的是根据第一个字母将此列表分成其他列表.

所以基本上我想要一个以a,b,c开头的国家列表......

Jus*_*ner 6

所以,你有一组字符串.您可以使用LINQ对它们进行分组并将它们转换为Dictionary.

首先,你需要根据第一个字母对它们进行分组(在这种情况下,情况如此重要a,A将采用不同的方式),使用GroupBy(n => n[0])where n[0]获取字符串中的第一个字符.

其次,您需要将分组转换为可以使用索引器的内容.字典是完美的.使用ToDictionary(g => g.Key, g => g).

将它串在一起时,它看起来像:

var dict = names.GroupBy(n => n[0]).ToDictionary(g => g.Key, g => g);
Run Code Online (Sandbox Code Playgroud)

并允许您使用以下方式获取分组名称:

foreach(var n in dict['A'])
{
    // Print out each country starting with 'A'
    Console.WriteLine(n);
}
Run Code Online (Sandbox Code Playgroud)

  • @EhsanSajjad - 编辑.希望这会有所帮助. (2认同)