2014-10-27 2 views
0

Я запускаю запрос linQ из списка всех элементов Descendant Nodes. Я хотел бы дифференцировать и отфильтровать типы XElement. Как это сделать, кроме использования .toString() и сравнения его с «Элементом»?Как вы можете определить, является ли Xnode типом XElement?

string filename = @"C:\MyFiles\Programming\XML\MobileResponse2.xml"; 
     var elem = XElement.Load(filename); 
     var query = from c in elem.DescendantNodes() 
        where c.NodeType.ToString() == "Element" 
        select c; 

Примечание: можно использовать elem.Descendant или elem.elements(), но я пытаюсь понять, как проверить в «Где» пункт если объект определенного типа?

Я собирался пойти с

where c.NodeType.ToString() is XElement 

, но тот не работал.

ответ

1

Edit: Просто заметил ваш "Примечание";)

var query = elem.DescendantNodes().Where (w => w is XElement); 
0

Попробуйте

string filename = @"C:\MyFiles\Programming\XML\MobileResponse2.xml"; 
var elem = XElement.Load(filename); 
var query = from c in elem.DescendantNodes() 
      where c is XElement 
      select c;