gpt4 book ai didi

c# - 如何通过混合值和键将字典转换为列表?

转载 作者:太空狗 更新时间:2023-10-30 00:30:44 26 4
gpt4 key购买 nike

我有一些字典。让它成为:

var dictionary = new Dictionary< string, List<MyClass>>();

我需要将其转换为包含键和值属性的对象列表。我通过以下方式使用 foreach 循环完成了它:

var list = new List<dynamic>();
foreach (var key in dictionary.Keys)
{
var values = dictionary[key];

foreach (var obj in values)
{
list.Add(new
{
obj.Property0,
obj.Property1,
obj.Property2,
...
key
}
);
}
}

它有效,但对我来说看起来很粗鲁。是否可以使用 LINQ 更优雅地完成此操作?

最佳答案

您可以使用 SelectMany 来做到这一点.

var list = dictionary.SelectMany(
kvp => kvp.Value,
(kvp,obj) => new {obj.Property0, obj.Property1, obj.Property2, kvp.Key})
.ToList();

或者查询snytax

var list = (from kvp in dictionary
from obj in kvp.Value
select new {obj.Property0, obj.Property1, obj.Property2, kvp.Key})
.ToList();

请注意,这会生成一个匿名类列表。如果你真的想要dynamic你需要做一个 Cast<dynamic>()ToList() 之前.此外,如果您希望匿名类的最后一个属性为 key而不是 Key你需要做 key = kvp.Key .

关于c# - 如何通过混合值和键将字典转换为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672325/

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