c# - 将类列表添加到字典 C#

标签 c# list dictionary

我有我的类(class)名单

List<Example> exampleList

其中已经包含了所有数据。我需要创建一个字典

Dictionary<string, List<Example>> exampleDictionary

Key需要是Example.Name,value需要是Example

下面是我的代码。问题是 Example.Name 可以相同。我需要按名称分组。我需要遍历我的列表,如果名称不存在,则添加新的键和值,否则将值添加到键中。我知道我的设置有误,但我似乎无法找出正确的方法。

foreach(var x in exampleList)
{
   if(!exampleDictionary.ContainsKey(x.Name)
      exampleDictionary.Add(x.Name, x)
   else
      exampleDictionary[x.Name] = x;       
}

我知道这段代码无法构建。我不确定如何设置它。

最佳答案

您可以使用 LookUp()扩展方法:

var lookup = exampleList.ToLookUp(e => e.Name);

此方法返回 Lookup<string, Example> ,一个将键映射到值集合的一对多字典。

但是您的代码可以通过 Name 固定分组并将每个组添加到 exampleDictionary :

foreach (var g in exampleList.GroupBy(e => e.Name))
    exampleDictionary.Add(g.Key, g.ToList());

或者

var exampleDictionary = exampleList.GroupBy(e => e.Name).ToDictionary(g => g.Key, g => g.ToList());

关于c# - 将类列表添加到字典 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36504393/

相关文章:

内置 malloc 的 C 隐式声明

python - 在字典中创建嵌套列表,列表中没有重复项

Peter Norvig 的拼写校正器的 Haskell 版本慢得令人难以置信

c - 当头被删除并向前移动时,链表不会返回主函数

java - 将数组映射到 int Java

c# - 在 EmguCV 中将视频转换为列表的最佳方法是什么

c# - DataGridView:查看空数据网格

python - 与 if 语句结合使用时,for 循环会忽略列表中的某些元素

c# - 将数据库表映射到数据协定时如何避免创建其他类?

c# - 带有用户选择的 WinForm;走哪条路?