gpt4 book ai didi

c# - 使用 Linq 从数组构建字典

转载 作者:行者123 更新时间:2023-11-30 23:14:14 25 4
gpt4 key购买 nike

我有一个类 A,其中包含一个由类 B 描述的键/值对数组。其中一个键称为“名称”。我想使用 Linq 构建一个 Dictionary<string, Dictionary<string, string>>其中第一个字典的键是 B 数组中名为“name”的属性,值是包含 B 的键/值对的第二个字典。

public class A
{
public int a;
public B[] b;
}

public class B
{
public string key;
public string value;
}

A[] a = new A[]
{
new A { a = 1, b = new B[] { new B { key = "name", value = "n1"}, new B { key = "test", value = "t1" } }, },
new A { a = 2, b = new B[] { new B { key = "name", value = "n2"}, new B { key = "test", value = "t2" } }, },
};

所以实际上我想在数组“a”上使用 Linq 构建以下字典:

Dictionary<string, Dictionary<string, string>> d = new Dictionary<string, Dictionary<string, string>>()
{
{ "n1", new Dictionary<string, string>() { { "name", "n1" }, { "test", "t1" } } },
{ "n2", new Dictionary<string, string>() { { "name", "n2" }, { "test", "t2" } } },
};

最佳答案

应该是:

var dict = a.ToDictionary(
x => x.b[0].value,
y => y.b.ToDictionary(z => z.key, z => z.value)
);

这个 LINQ 表达式唯一“有趣”的部分是我必须使用最多 z 个参数(xyz)...我编译了三遍才搞定(我总是把参数命名为x)

修改评论:

var dict = a.ToDictionary(
x => x.b.First(y => y.key == "name").value,
y => y.b.ToDictionary(z => z.key, z => z.value)
);

关于c# - 使用 Linq 从数组构建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43223312/

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