检查XML节点是否具有Linq C#的属性?

检查XML节点是否具有Linq C#的属性?,c#,xml,linq,C#,Xml,Linq,如何检查和查看节点是否实际具有某个属性?我有一个包含多个节点的XML文件,如下所示: <Field From="OldString" To="NewString" /> <Field From="OldString" To="NewString" PrefixValue="OptionalAttribute" /> 到目前为止还不错。问题是此结构即将更改为某些节点的外观如下: <Field From="OldString" To="NewString" /

如何检查和查看节点是否实际具有某个属性?我有一个包含多个节点的XML文件,如下所示:

<Field From="OldString" To="NewString" /> 
<Field From="OldString" To="NewString" PrefixValue="OptionalAttribute" />

到目前为止还不错。问题是此结构即将更改为某些节点的外观如下:

<Field From="OldString" To="NewString" /> 
<Field From="OldString" To="NewString" PrefixValue="OptionalAttribute" />


现在,当PrefixValue存在时,我应该将该属性中的值前置到一个字符串中,这不是很困难,但是当我尝试查看节点的PrefixValue属性是否存在时,我遇到了一些问题。在不存在PrefixValue的情况下,节点中根本不存在属性PrefixValue。我如何检查属性是否存在Linq表达式?

这取决于您想做什么。如果要在投影中使用它,可以使用:

(string) element.Attribute("PrefixValue")
如果缺少属性,则返回null,这很有用

如果您想在where子句中使用它,请使用以下内容:

where element.Attribute("PrefixValue") != null
上面的代码应该负责检查属性是否存在


如果没有if语句,您将得到一个未设置为实例错误的对象。

基本上,我只希望在属性完全缺失的情况下作为第一步返回一个null值。谢谢@Ziggler:这表明您使用的是
XNode
,而不是
XElement
。我们看不到您的任何代码,但基本上您希望使用
XElement
…如果是XmlDocument,我得到的错误是XNode没有属性属性或方法…如果是XDocument,我有XElement的属性方法,但没有字符串输入。@Ziggler:我不知道您的意思,恐怕,但听起来你们应该问一个新问题,向我们展示你们的代码。我的问题是,若我们在上面的答案中把元素作为元素。。。属性(“PrefixValue”)向我显示错误,因为属性方法要求的是XName而不是字符串。