Поиск узлов с отсутствующими атрибутами - PullRequest
1 голос
/ 02 ноября 2011

У меня есть xml, который выглядит так:

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

Я могу написать LINQ, чтобы найти узлы type = "One".(или type = "Two")

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

Как написать запрос linq, чтобы найти узел идентификатора, который вообще не имеет атрибута типа?

1 Ответ

3 голосов
/ 02 ноября 2011

Вы должны использовать тот факт, что Attribute() вернет ноль / ничего, если такого атрибута нет.

В C # я бы использовал:

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

My предположить это то, что вам нужен VB:

Dim ThingList As IEnumerable(Of XElement) = _
   From el In doc...<Thing>.<ID> _
   Where el.Attribute("type") Is Nothing _
   Select el
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...