用列表中的值填充字典

问题描述 投票:0回答:2

我在使用 C# 编程时遇到问题,特别是我有一个从 linq 查询生成的列表。该列表的示例如下

ID = 1, CODE = 2 ID = 1, CODE = 3 ID = 1  CODE = 4 ....

我想用这个值填充一个字典,让我的字典的键等于我的列表的 id 和像我的列表的代码这样的值

我想要的例子是

myDict = 1 : {2,3,4}

有可能吗?

提前谢谢您!

c# model-view-controller model
2个回答
0
投票

您可以使用

GroupBy

Dictionary<int, List<int>> myDict = list
    .GroupBy(x => x.ID)
    .ToDictionary(g => g.Key, g => g.Select(x => x.CODE).ToList());

0
投票

有一种不太为人所知的集合类型,称为

ILookup
正是用于此目的,即将一个键映射到多个项目。创建它的唯一方法是通过扩展方法
ToLookup()

假设

ID
CODE
都是
int

var lookup = yourList.ToLookup(x => x.ID, x => x.CODE);
var itemsWithId1 = lookup[1]; // contains 2, 3, 4
© www.soinside.com 2019 - 2024. All rights reserved.