2013-02-28 61 views
0

我正在使用linq代碼解析XML文件。這是我的代碼。我想要綁定詳細信息和圖像列表。從列表中檢索數據

var query = from l in xmlDoc.Descendants("Person") 
      from detail in l.Descendants("Details") 
      select new Notch 
      { 
       name = (string)l.Attribute("name").Value, 
       detail= l.Element("detail").Select(a => (string)a.Attribute("detailName")).ToList(), 
       Image = l.Element("detail").Elements("event_image").Select(x => (string)x.Attribute("url")).ToString() 
      }; 

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

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

Raja 

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

    Rama 

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

回答

0

問題是你得到的是字符串列表,而不是唯一的字符串。 試試這個代碼,以便加入每串有一條新的線路能夠正常打印:

detail = string.Join(System.Environment.NewLine, l.Element("detail").Select(a => (string)a.Attribute("detailName"))) 

全碼:

var query = from l in xmlDoc.Descendants("Person") 
      from detail in l.Descendants("Details") 
      select new Notch 
      { 
       name = (string)l.Attribute("name").Value, 
       detail= string.Join(System.Environment.NewLine, l.Element("detail").Select(a => (string)a.Attribute("detailName"))), 
       Image = l.Element("detail").Elements("event_image").Select(x => (string)x.Attribute("url")).ToString() 
      }; 

foreach (var result in query) 
{ 
    foreach (var detail in result.detail) 
    { 
      Console.WriteLine(detail); 
    } 
} 
+0

感謝喜來重播,我希望你的答案,但我會得到一些錯誤 – user123 2013-02-28 11:29:12

+0

您好我有錯誤像'string.Join(string,string [])'最好的重載方法匹配有一些無效的參數 – user123 2013-02-28 12:20:20

+0

嘗試將內部選擇轉換爲數組:detail = string.Join(System.Environment。 NewLine,l.Element(「detail」)。Select(a =>(string)a.Attribute(「detailName」)。ToArray())) – sesispla 2013-02-28 14:49:47