gpt4 book ai didi

c# - 如何使匿名类型的属性名称动态化?

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

我有以下 LinqToXml 查询:

  var linqDoc = XDocument.Parse(xml);
var result = linqDoc.Descendants()
.GroupBy(elem => elem.Name)
.Select(group => new
{
TagName = group.Key.ToString(),
Values = group.Attributes("Id")
.Select(attr => attr.Value).ToList()
});

是否有可能以某种方式使我的匿名类型的字段成为变量值,以便它可以作为(不工作):

  var linqDoc = XDocument.Parse(xml);
var result = linqDoc.Descendants()
.GroupBy(elem => elem.Name)
.Select(group => new
{
group.Key.ToString() = group.Attributes("Id")
.Select(attr => attr.Value).ToList()
});

最佳答案

不,即使是匿名类型也必须有编译时字段名。似乎想要一个不同类型的集合,每个类型都有不同的字段名称。也许您可以改用 Dictionary

  var result = linqDoc.Descendants()
.GroupBy(elem => elem.Name)
.ToDictionary(
g => g.Key.ToString(),
g => g.Attributes("Id").Select(attr => attr.Value).ToList()
);

请注意,字典可以很容易地序列化为 JSON:

{ 
"key1": "type1":
{
"prop1a":"value1a",
"prop1b":"value1b"
},
"key2": "type2":
{
"prop2a":"value2a",
"prop2b":"value2b"
}
}

关于c# - 如何使匿名类型的属性名称动态化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24411916/

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