目前我得到HeaderColumns列表從下面的XML片段:LINQ to XML - 如何從匿名對象獲取字典?
<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>
從我創建一個對象如下:(!admitedly類似於前面一個問題)
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<int, string> myHeaders = new Dictionary<int, string>();
foreach (var column in performancePanels.Panels[0].HeaderColumns)
{
myHeaders.Add(column.PerformanceId, column.Text);
}
以爲可以的政績與LINQ的這個已經爲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>(),
的東西,但這並不工作,因爲
- ToDictionary()需要函數求參數,我不知道 那是什麼/如何實現它, 和
- 無論如何,代碼可能是錯誤的!
請問有人能建議我如何才能達到我需要的效果?謝謝。
編輯:我試過在下面實現Spender的解決方案解決方案,但我很難理解我需要在代碼中進行更改。有人可以澄清嗎?由於
你有沒有得到一個答案,你可以用你的上一個問題? – 2010-04-28 22:49:29
我做了 - 問題和代碼相似但最終不同,所以我就這樣問了一個單獨的問題。 – DaveDev 2010-04-28 23:08:17