gpt4 book ai didi

c# - 字典值作为不同的键

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

我有这个:

        var color = new Dictionary<string, List<string>>();
color.Add("Blue", new List<string>() { "1", "2" });
color.Add("Green", new List<string>() { "2", "3" });
color.Add("Red", new List<string>() { "1", "3" });
color.Add("Black", new List<string>() { "3" });
color.Add("Yellow", new List<string>() { "1" });

我想把它转换成

Dictionary<string, List<string>>

看起来像这样:

Key: 1, Value: Blue, Red, Yellow
Key: 2, Value: Blue, Green
Key: 3, Value: Green, Red, Black

尝试过:

var test = color.GroupBy(x => x.Value.FirstOrDefault())
.ToDictionary(g => g.Key, g => g.Select(x => x.Key).ToList());

但是这只适用于一个项目所以(“FirstOrDefault()”),我只得到

Key: 1, Value: Blue, Red, Yellow

我该怎么做?我可以循环遍历值(不同的)并循环遍历键并检查值是否存在,然后建立一个新值,但我想避免这种情况并使用 lamda。

看到很多这样的例子,但没有字符串列表作为值,只有一个字符串。

最佳答案

试试这个:

var test = color
.SelectMany(x => x.Value.Select(v =>
new
{
Color = x.Key,
Integer = v
}))
.GroupBy(x => x.Integer)
.ToDictionary(x => x.Key, x => x.Select(y => y.Color).ToList());

关于c# - 字典值作为不同的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47576491/

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