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

时间:2014-07-03 15:21:17

标签: c# .net linq

我有一份国家/地区名称

Afghanistan
Albania
Bahamas, The
Bahrain
Cambodia
Cameroon
.
.
.

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

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

2 个答案:

答案 0 :(得分:6)

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

首先,您需要根据第一个字母对其进行分组(在这种情况下,使用aAGroupBy(n => n[0])以不同方式处理案例事项)n[0]其中{{ 1}}获取字符串中的第一个字符。

其次,您需要将分组转换为可以使用索引器的内容。字典是完美的。使用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);
}

答案 1 :(得分:0)

你可以这样做:

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