C# 根据字符串的第一个字母,将字符串列表分隔为一个新列表

C# 根据字符串的第一个字母,将字符串列表分隔为一个新列表,c#,.net,linq,C#,.net,Linq,我有一个国家的名单 Afghanistan Albania Bahamas, The Bahrain Cambodia Cameroon . . . 我想做的是根据第一个字母将这个列表分成其他列表 所以基本上我想列出一个以a、b、c……开头的国家列表。你可以这样做: var countriesWithStartingLetterA = countries.Where(x => x.StartsWith("A")).ToList(); 您可以这样做: var countriesWithS

我有一个国家的名单

Afghanistan
Albania
Bahamas, The
Bahrain
Cambodia
Cameroon
.
.
.
我想做的是根据第一个字母将这个列表分成其他列表


所以基本上我想列出一个以a、b、c……开头的国家列表。你可以这样做:

var countriesWithStartingLetterA = countries.Where(x => x.StartsWith("A")).ToList();

您可以这样做:

var countriesWithStartingLetterA = countries.Where(x => x.StartsWith("A")).ToList();

因此,您有一个字符串集合。您可以使用LINQ对它们进行分组并将它们转换为字典

首先,您需要使用
GroupBy(n=>n[0])
根据第一个字母对它们进行分组(在这种情况下,大小写很重要,因此
a
a
将被区别对待),其中
n[0]
获取字符串中的第一个字符

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

当你把它串在一起时,它看起来像:

var dict = names.GroupBy(n => n[0]).ToDictionary(g => g.Key, g => g);
并允许您使用以下方式获取分组名称:

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

因此,您有一个字符串集合。您可以使用LINQ对它们进行分组并将它们转换为字典

首先,您需要使用
GroupBy(n=>n[0])
根据第一个字母对它们进行分组(在这种情况下,大小写很重要,因此
a
a
将被区别对待),其中
n[0]
获取字符串中的第一个字符

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

当你把它串在一起时,它看起来像:

var dict = names.GroupBy(n => n[0]).ToDictionary(g => g.Key, g => g);
并允许您使用以下方式获取分组名称:

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

伟大的你试过什么?提示
.GroupBy(s[0])
(故意不正确的语法)好吗?你试过什么?提示
.GroupBy(s[0])
(故意不正确的语法)请添加seom解释understandable@EhsanSajjad-这是可以理解的,如果不是一点点的研究工作,将会有很大的帮助
n[0]
将获取字符串的第一个索引。我说的对吗?@EhsanSajjad-编辑。希望这能有所帮助。请添加seom解释understandable@EhsanSajjad-这是可以理解的,如果不是一点点的研究工作,将会有很大的帮助
n[0]
将获取字符串的第一个索引。我说的对吗?@EhsanSajjad-编辑。希望这能有所帮助。韦斯利·斯肯,你所要做的就是把这个代码重复26次:^是的,这只是一个带有给定字母的列表(似乎我误解了这个问题)韦斯利·斯肯,你所要做的就是把这个代码重复26次:^是的,这只是一个带有给定字母的列表(似乎我误解了这个问题)