C# LINQ到XML:XNode查询可能吗

C# LINQ到XML:XNode查询可能吗,c#,.net,silverlight,linq-to-xml,C#,.net,Silverlight,Linq To Xml,我想在Silverlight3中使用LINQ到XML,因为不支持XPath。 我已经掌握了窍门。但是我正在进行的项目不能保证我要查询的所有XML标记都会出现在结果XML文件中 由于这个原因,我将无法作为XDocument查询整个文件,因为一个文档中缺少标记将使枚举变得混乱。 是否仍要将XNode类型转换为XDocument?我这样问是因为我无法查询XNode。即使使用LINQ to XML,您也应该按名称进行查询,因此我不确定为什么缺少任何特定标记会“混淆枚举”—只是;您可能有一些空值,即 va

我想在Silverlight3中使用LINQ到XML,因为不支持XPath。 我已经掌握了窍门。但是我正在进行的项目不能保证我要查询的所有XML标记都会出现在结果XML文件中

由于这个原因,我将无法作为XDocument查询整个文件,因为一个文档中缺少标记将使枚举变得混乱。
是否仍要将XNode类型转换为XDocument?我这样问是因为我无法查询XNode。

即使使用LINQ to XML,您也应该按名称进行查询,因此我不确定为什么缺少任何特定标记会“混淆枚举”—只是;您可能有一些空值,即

var customer = node.Element("Foo");
// now test for null ;p
您不能将任意
XNode
强制转换为
XDocument
,但如果您确定它是一个元素,则强制转换为
XElement
应提供您所需的内容

还请注意,当值节点可能丢失时,您可能会发现使用转换运算符最简单:

var auditDate = (DateTime?)e.Element("AuditDate");
如果
不存在,这将返回一个空的
可空的
-相同的方法适用于大多数常见的值类型,或者只转换为
字符串的字符串