Я думаю, что вы должны идти в этом направлении:
RecipeXmlDocument.Root.Elements()
.Where(e => e.Elements("Filter").SingleOrDefault( [filter conditions] ) != null);
Это берет все элементы под корнем, где один подэлемент с именем "Filter" соответствует [условиям фильтра].Если такого подэлемента не существует, SingleOfDefault
вернет null
и, следовательно, предложение Where
будет ложным, а элемент не будет включен.
Возможно, вам придется немного подстроить его в соответствии ск вашему случаю.
[условия фильтра] могут выглядеть примерно так:
f => f.Attribute("attr1").Value == "1" && f.Attribute("attr2").Value == "2"
ОБНОВЛЕНИЕ: Моя попытка преобразовать его в VB.net (пальцы скрещены):
Dim xmlElement =
(From rec In RecipeXmlDocument.Descendants("Element1") _
Where not (From filter in rec.Elements("Filter").Any( _
Function(f) f.Attribute("attr1") = "1" And f.Attribute("attr2") = "2") is Nothing)
Скорее всего, это не скомпилируется, и вам нужно внести изменения, но я надеюсь, что это поможет:)