【发布时间】:2011-02-02 01:49:00
【问题描述】:
我有一个对 XML 数据集的 linq 查询,执行时会生成 NullReferenceException。
XDocument dataDoc = XDocument.Load(new StringReader(e.Result));
var Genres = from genre in dataDoc.Descendants("genres")
where (!genre.Element("ID").IsEmpty)
select (string)genre.Element("id").Value + ',' + (string)genre.Attribute("name").Value + ',' + (string)genre.Attribute("url").Value;
foreach (string myGenre in Genres)
{
}
执行时,Linq 查询工作正常,但当代码尝试遍历 foreach 循环时,会发生 NullReferenceException。
现在,我认为问题与我正在阅读的 XML 数据有关,如下所示:
<genres>
<translated>true</translated>
<genre name="1">
<id>28</id>
<url>http://url1</url>
</genre>
<genre name="2">
<id>12</id>
<url>http://url2</url>
</genre>
</genres>
是结构不同的第一个子节点导致问题吗? 我在这背后的课程应该不是问题,而是以下(以防万一):
public class Genre
{
public string ID { get; set; }
public string Name { get; set; }
public string URL { get; set; }
}
【问题讨论】:
-
你的
where子句应该是小写的。
标签: linq