gpt4 book ai didi

c# - 如何将 List> 转换为 Dictionary>?

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:51 26 4
gpt4 key购买 nike

我有具有不同值的重复键,我想将其转换为具有 1 个键及其值的字典。

下一个例子将最好地解释我的意思:

var tup = new List<Tuple<int, int>>();
tup.Add(new Tuple<int, int>(1, 1));
tup.Add(new Tuple<int, int>(1, 2));

var dic = new Dictionary<int, List<int>>();

将 tup 转换为 dic 的优雅方法是什么?

我设法用 foreach 做到了这一点,但我想用 LINQ 来写它。

foreach (var item in tup)
{
if (dic.ContainsKey(item.Item1))
{
dic[item.Item1].Add(item.Item2);
}
else
{
dic.Add(item.Item1, new List<int> { item.Item2 });
}
}

最佳答案

var list = tup.GroupBy(x => x.Item1)
.ToDictionary(
x => x.Key,
x => x.Select(y => y.Item2).ToList());

首先,我们按 GroupBy 分组第 1 项。这应该很明显。

然后,我们调用ToDictionary并传入 keySelector和一个 elementSelector .给定 IGrouping<int, Tuple<int, int>>,他们分别选择键和值。 .

供引用,this particular overload of ToDictionary is used .

或者,正如 Iridium 在评论中所说,这也有效:

var list = tup.GroupBy(x => x.Item1, x => x.Item2)
.ToDictionary(x => x.Key, x => x.ToList());

This overload of GroupBy allows you to select 2 things!

关于c# - 如何将 List<Tuple<int, int>> 转换为 Dictionary<int, List<int>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49097165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com