我有和XElement对象是由XML构建的,如下所示:
<Root>
<Oppurtunities>
<Oppurtunity>
<Title> Account Manager</Title>
<Company>Company name</Company>
<Location>Boston</Location>
<EndDate>2013-04-11</EndDate>
<c>acce</c>
<id>MNYN-95ZL8L</id>
<Description>This is a detailed description...</Description>
</Oppurtunity>
现在我需要从特定的Oppurtunity节点获取描述值,这意味着我想从id特定的位置获取描述。我需要做这样的事情:
//My XElement object is called oppurtunities
oppurtunities = new XElement((XElement)Cache["Oppurtunities"]);
string id = Request.QueryString["id"];
//I want to do something like this but of course this is not working
var description = (from job in oppurtunities
.Element("Oppurtunities")
.Element("Oppurtunity")
.Element("Description")
where job.Element("id") == id).SingleOrDefault();
答案 0 :(得分:0)
您必须在查询中进一步移动.Element("Description")
,以允许id
条件工作:
//I want to do something like this but of course this is not working
var description = (from job in oppurtunities
.Element("Oppurtunities")
.Elements("Oppurtunity")
where job.Element("id") == id
select job.Element("Description")).SingleOrDefault()
要将Element("id")
作为字符串使用(string)XElement
转换进行比较 - 即使找不到<id>
,它也会有效:
where (string)job.Element("id") == id
在这种情况下,使用XElement.Value
会抛出NullReferenceException
。