2013-03-02 103 views
0

我正在使用linq代碼解析XML文件。這是我的代碼。我想綁定細節和圖像列表。將system.collection.generic.list轉換爲列表

XmlSerializer serializer = new XmlSerializer(typeof(Notchs)); 
     XDocument xmlDoc = XDocument.Parse(dataInXmlFile); 
     Notchs notchs = (Notchs)serializer.Deserialize(xmlDoc.CreateReader()); 

     var query = from l in xmlDoc.Descendants("Category") 
      select new Notch 
      { 
       name = (string)l.Attribute("name").Value, 
       Titles = l.Element("Articles").Elements("article") 
         .Select(s => s.Attribute("title").ToString()) 
         .ToList(), 

       Image = l.Element("Articles").Elements("article").Elements("thumb_image").Elements("image") 
         .Select(x => x.Attribute("url").ToString()).ToList() 
      }; 

     foreach (var result in query) 
     { 
      Console.WriteLine(result.name); 
      foreach (var detail in result.Titles) 
      { 
       Console.WriteLine(detail); 
      } 
     } 

     NotchsList.ItemsSource = query.ToList(); 

我試過這個代碼,但我得到了像下面的輸出..但我想要的細節和圖像列表。

name 

    System.Collection.Generic.List'1[string.system] 

    name 

    System.Collection.Generic.List'1[string.system] 
+0

請給我們一些示例數據(XML)以及您的輸出應該如何。 – pescolino 2013-03-02 18:24:57

+0

好吧,我會給你的, – user123 2013-03-04 04:20:49

+0

@ user123:將來請編輯你的問題,而不是發佈一個新的。如果你不知道如何編輯閱讀[faq](http://stackoverflow.com/faq#howtoask)。 – pescolino 2013-03-04 17:23:44

回答

0

我覺得你

Titles = l.Element("Articles").Elements("article") 
            .Select(s => s.Attribute("title").ToString()) 
            .ToList() 

是返回一個IEnumerable<IEnumerable<String>>。您可能需要執行.SelectMany而不是.Select

+0

我試過這個東西我得到錯誤像不能隱式轉換類型'System.Collections.Generic.List '到'System.Collections.Generic.List ' – user123 2013-03-02 05:35:46