2012-03-25 203 views
0

我想要的空單使用LINQ來幫助電影演員在名單我目前正在使用這個查詢:的LINQ to XML查詢,返回類

XDocument doc = XDocument.Load(reqUrl); 
      var items = (from c in doc.Descendants("filmography") 
         select new Actor 
         { 
          Filmograpgy = c.Element("link").Value, 

         }).ToList<Actor>(); 

,但我得到的錯誤,當我試圖給影片分配一個值。該查詢返回帶有空白影片的一個元素的列表。如何將這些鏈接分配給列表?我已附加價值c

<filmography> 
    <link href="http://api.netflix.com/catalog/titles/movies/70213511" rel="http://schemas.netflix.com/catalog/title" title="Rock of Ages"></link> 
    <link href="http://api.netflix.com/catalog/titles/movies/70173048" rel="http://schemas.netflix.com/catalog/title" title="Mission: Impossible - Ghost Protocol"></link> 
    <link href="http://api.netflix.com/catalog/titles/movies/70127226" rel="http://schemas.netflix.com/catalog/title" title="Knight and Day"></link> 
    <link href="http://api.netflix.com/catalog/titles/movies/70125259" rel="http://schemas.netflix.com/catalog/title" title="Together: The Hendrick Motorsports Story"></link> 
</filmography> 

回答

0

問題需要的是你的代碼假定有一個鏈接元素,但有很多 - 也許你不希望它的值(這是空的),但例如稱號屬性:

Filmography = c.Elements("link") 
       .Select(x => x.Attribute("title").Value) 
       .ToList(); 

以上數據假設Filmography屬性是List<string>其中包含了電影的片名。這是我可以做的最好的,因爲你沒有顯示Actor的類定義以及你實際要查詢的數據。

2

您需要剔除href attribute。值會得到鏈接標記<link>VALUE</link>之間的值。

您需要:

c.Element("link").Attribute("href") 

而且,你只得到一個價值,因爲你是基於根節點(片目)的選擇執行你的選擇。

<filmography> 
    <link>THIS WILL GET PICKED IN THE ORIGINAL QUERY</link> 
    <link>THIS WILL BE IGNORED</link> 
    <link>THIS WILL BE IGNORED</link> 
    <link>THIS WILL BE IGNORED</link> 
</filmography> 

如果你想每一個環節,那麼你需要讓你的查詢找到這些元素,然後選擇您從每一個

c.Elements("link") 
    .Select(c=>c.Attribute("href").Value) 
    .ToList();