gpt4 book ai didi

c# - LINQ to XML - 如何从匿名对象中获取字典?

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

<分区>

目前我从以下 XML 片段中获取 HeaderColumns 列表:

<PerformancePanel>
<HeaderColumns>
<column performanceId="12" text="Over last month %" />
<column performanceId="13" text="Over last 3 months %" />
<column performanceId="16" text="1 Year %" />
<column performanceId="18" text="3 Years % p.a." />
<column performanceId="20" text="5 Years % p.a." />
<column performanceId="22" text="10 Years % p.a." />
</HeaderColumns>
</PerformancePanel>

我从中创建了一个对象,如下所示:(诚然与之前的问题相似!)

var performancePanels = new
{
Panels = (from panel in doc.Elements("PerformancePanel")
select new
{
HeaderColumns = (from column in panel.Elements("HeaderColumns").Elements("column")
select new
{
PerformanceId = (int)column.Attribute("performanceId"),
Text = (string)column.Attribute("text")
}).ToList(),
}).ToList()
};

我希望 HeaderColumns 是一个 Dictionary(),所以稍后我从匿名对象中提取值,如下所示:

Dictionary<int, string> myHeaders = new Dictionary<int, string>();
foreach (var column in performancePanels.Panels[0].HeaderColumns)
{
myHeaders.Add(column.PerformanceId, column.Text);
}

我认为我可以使用类似于此的 Linq to XML 来实现这一点

HeaderColumns = (from column in panel.Elements("HeaderColumns").Elements("column")
select new Dictionary<int, string>()
{
(int)column.Attribute("performanceId"),
(string)column.Attribute("text")
}).ToDictionary<int,string>(),

但这行不通因为

  1. ToDictionary() 需要一个 Func 参数,我不知道那是什么/如何实现,和
  2. 无论如何,代码可能是错误的!

有人可以建议我如何才能达到我需要的结果吗?谢谢。

编辑:我尝试在下面实现 Spender 的解决方案,但我很难理解我需要在我的代码中更改什么。有人可以澄清吗?谢谢

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