У меня есть элемент 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"
не всегда является первым.Не могли бы вы помочь мне здесь и рассказать, как использовать другое утверждение Linq для свойства Attributes
ниже?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();