我有一个带有子元素的 XML 元素,如下所示:
<Groups>
<Group1 name="first" value="1" />
<Group2 value="2" name="second" />
<Group3 value="3" />
</Groups>
我正在使用一个已经存在的方法MyMethod()
来获取Groups
返回一个对象的元素,该XmlNodeList
对象我转换为XmlNode
. 之后,我想使用 Linq 语句仅获取那些具有name
属性的组并将这些名称存储在字符串列表中。
在下面的代码片段中,我试图检查 XML 节点的第一个属性的名称是否相等"name"
,但该"name"
属性可能并不总是第一个。您能否在这里帮助我并告诉我如何在Attributes
下面的财产上使用另一个 Linq 声明?Attributes
属性是XmlAttributeCollection类型。
List<string> result = MyMethod().Cast<XmlNode>()
.Where(node => node.Attributes[0].Name == "name")
.Select(node => node.Attributes[0].Value).ToList();
编辑:我设法使用内置方法找到了解决方案GetNamedItem
:
List<string> result = MyMethod().Cast<XmlNode>()
.Where(node => node.Attributes?.GetNamedItem("name") != null)
.Select(node => node.Attributes?.GetNamedItem("name").Value).ToList();