我想使用Linq帮助制作演员所在的电影列表。我目前正在尝试使用此查询:
XDocument doc = XDocument.Load(reqUrl);
var items = (from c in doc.Descendants("filmography")
select new Actor
{
Filmograpgy = c.Element("link").Value,
}).ToList<Actor>();
但是当我尝试为Filmography分配值时出现错误。此查询返回一个列表,其中包含一个带有空白影片的元素。如何将这些链接分配给列表?我附上了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 :(得分: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();
答案 1 :(得分:0)
问题是你的代码假定有一个单个链接元素,但有很多 - 你也可能不希望它的值(它是空的),但是title属性:
Filmography = c.Elements("link")
.Select(x => x.Attribute("title").Value)
.ToList();
上面假设Filmography
属性是List<string>
,其中包含电影标题。鉴于您没有显示Actor
的类定义以及您实际要查询的数据,这是我能做的最好的。