问题:现在有一个列表List,列表里面是Language对象,Language对象有LanguageCode,LanguageName,WordCount三个属性,现在要使用group通过LanguageCode将列表中的对象分类并将每类存入字典。
1.定义一个Language对象
public class Language
{
public Language(string languageCode, string languageName,int wordCount)
{
LanguageCode = languageCode;
LanguageName = languageName;
WordCount = wordCount;
}
public string LanguageCode { get; set; }
public string LanguageName { get; set; }
public int WordCount { get; set; }
}
2.实例化Language并添加进List
var languages = new List<Language>();
languages.Add(new Language("US", "US-XiaoWang", 15));
languages.Add(new Language("US", "US-XiaoLiu", 18));
languages.Add(new Language("US", "US-XiaoSang", 40));
languages.Add(new Language("CN", "CN-桑", 7));
languages.Add(new Language("CN", "CN-王", 21));
languages.Add(new Language("CN", "CN-侯", 30));
languages.Add(new Language("JP", "JP-sssss", 24));
languages.Add(new Language("JP", "JP-aaaaa", 52));
languages.Add(new Language("JP", "JP-lllll", 60));
3.通过LanguageCode进行分组
var dic = new Dictionary<string, List<Language>>();
dic = languages.GroupBy(o => o.LanguageCode).ToDictionary(g => g.Key, g => g.ToList());
4.输出结果:
int i = 0;
foreach (var language in dic.Values)
{
i++;
Console.WriteLine($"第{i}种分类");
foreach(var names in language)
{
Console.WriteLine($"{names.WordCount} {names.LanguageName}");
}
}
结果如下图:
由结果图可知,将List中的内容通过LanguageCode分成不同类型(三种),也就是说第三步的dic共有三个值,如下图: