[英]LINQ where clause returns null
我正在嘗試使用LINQ從xml獲取值。 當我添加where子句時,我得到null。 當我刪除where子句時,我從xml獲得項目,但是'Value'沒有屬性。
這是我要從中獲取BatchId,ResultCode和SearchId值的xml。
{<WsSearchReply xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ExtensionData />
<BatchId>6787350</BatchId>
<Hits />
<ResultCode>NO_HITS</ResultCode>
<SearchId>67292500</SearchId>
</WsSearchReply>}
This returns 4 items:
IEnumerable<XNode> dps = from el in d.Root.Nodes()
select el;
this doesn't return any records:
IEnumerable<XNode> dps = from el in d.Root.Nodes()
where el.Equals("<ExtensionData />")
select el;
using System.Xml;
using System.Xml.Linq;
string text = Serializer.SerializeObject<CchSearchService.WsSearchReply>(reply, true);
XDocument d = new XDocument();
XElement e = XElement.Parse(text);
d.Add(e);
IEnumerable<XNode> dps = from el in d.Root.Nodes()
//where el.Equals("<ExtensionData />")
select el;
foreach (XNode el in dps)
{
string x = el.ToString();
Console.WriteLine(el);
}
要獲取ExtensionData元素,您可以簡單地使用以下命令:
IEnumerable<XElement> dps = d.Root.Elements("ExtensionData");
從本質上講,這是一種快速的方法(建議您在注釋中使用lync,下面的代碼是不必要的)
IEnumerable<XElement> dps = from el in d.Root.Elements() where el.Name.LocalName.Equals("ExtensionData") select el;
有關更多信息, XElement
實現XNode
。 XNode
是基類,可枚舉的Node可以包含除注釋(XComment)之類的元素以外的其他內容,並且沒有名稱。 如果使用Elements
屬性,則將僅返回XElement
對象。 XElement類包含與元素有關的數據,例如元素名稱
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.