查找节点与“失踪”的属性

查找节点与“失踪”的属性

问题描述:

我有XML,看起来像这样:查找节点与“失踪”的属性

<Doc> 
    <Thing> 
     <ID type="One">Fred</ID> 
    </Thing> 
    <Thing> 
     <ID>Bill</ID> 
    </Thing> 
    <Thing> 
    <ID type="Two">John</ID> 
    </Thing> 
</Doc> 

我可以写LINQ找到的类型=“一个”节点。 (或类型=“两课”)

Dim ThingList As IEnumerable(Of XElement) = _ 
    From el In doc...<Thing>.<ID> _ 
    Where el.Attribute("type").Value = "One" _ 
    Select el 

我怎么会写LINQ查询发现,没有一个类型的属性在所有的ID的节点?

您应该使用的事实,Attribute()将返回null /什么,如果没有这样的属性。

在C#中,我会用:

var idsMissingType = doc.Descendants("ID") // Or whatever 
         .Where(x => x.Attribute("type") == null); 

猜测是你想要的VB是:

Dim ThingList As IEnumerable(Of XElement) = _ 
    From el In doc...<Thing>.<ID> _ 
    Where el.Attribute("type") Is Nothing _ 
    Select el