2013-12-10 31 views
0

我從看起來像這樣的XML文檔獲取項目:將項與Linq查詢

<Pages> 
    <Page1> 
    <item name="name1" /> 
    <item name="name2" /> 
    </Page1> 
    <Page2> 
    <item name="name1" /> 
    <item name="name2" /> 
    </Page2> 
</Pages> 

我想這些信息存儲在一個列表。所以我有一個Dictionary這應該存儲一個列表items

private Dictionary<string, List<ItemElement>> _pages = new Dictionary<string, List<ItemElement>>(); 

然後我嘗試閱讀這樣的XML,但我如何添加項目到List?這是行不通的:

_pages = Configuration.Elements("Pages").Elements() 
    .ToDictionary(x => x.Name.LocalName, 
     x => x.Descendants("item") 
      .ToList(y => 
       new ItemElement 
       { 
        Name = y.Attribute("name").Value, 
        Value = "Value", 
        Origin = "Origin" 
       }) 
      ); 

但它說:ToList takes '0' arguments。那麼我如何解決這個問題?我如何添加項目到這個linq查詢列表中?

回答

3

先創建ItemElements,然後將它們放入列表中。

_pages = Configuration.Elements("Pages").Elements() 
    .ToDictionary(x => x.Name.LocalName, 
     x => x.Descendants("item") 
      .Select(y => 
       new ItemElement 
       { 
        Name = y.Attribute("name").Value, 
        Value = "Value", 
        Origin = "Origin" 
       }) 
      ) 
      .ToList();