使用Linq进行列表到字典的转换

本文关键字:字典 转换 列表 Linq 使用 | 更新日期: 2023-09-27 18:10:29

有人能建议我应该使用什么Linq运算符来编写一个优雅的代码,将List转换为Dictionary of List吗?例如,我有一个人员列表(List<Person>(,我想将其转换为列表词典(如使用人员姓氏作为关键字的Dictionary<string, List<Person>>(。我需要它来快速查找按姓氏

使用Linq进行列表到字典的转换

列出的人员列表

List<Person>:获取Dictionary<string, List<Person>>

var dictionary = list
                   .GroupBy(p => p.LastName)
                   .ToDictionary(g => g.Key, g => g.ToList());

这不是您所要求的,但您可以使用Philip响应:-(

var lookup = myList.ToLookup(p => p.Surname);

这将创建一个与您想要的非常相似的ILookup<string, Person>(您不会有Dictionary<string, List<Person>>,但与Dictionary<string, IEnumerable<Person>>更相似,并且ILookup是只读的(

您还可以使用以下内容。

foreach(var item in MyList)
 {  
   if(!myDictionary.Keys.Contains(item))
     myDictionary.Add(item,item.value);
 }