C # Синтаксис лямбда-метода для получения значений атрибутов, соответствующих шаблону в LINQ to XML - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть следующий фрагмент XML, и я хотел бы вытащить значения атрибутов состояния, которые не равны нулю.Я могу получить элементы, которые соответствуют критериям, но мне действительно нужны значения атрибутов состояния.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response>
    <Auth status = "0">Moo</Auth>
    <Add status = "817">Cow</Add>
    <Add status = "888">Brown</Add>
    <Add status = "123">Dog</Add>
</response>

Этот лямбда-синтаксис возвращает список совпадающих элементов, но мне нужен списокзначения состояния не список элементов с этими значениями.

var errcodeList = xml.Descendants("Add").Where(x => x.Attribute("status").Value != "0").Attributes("status");

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Это только предположение, однако это может сработать для вас.Когда вы используете Select, вы проецируете IEnumerable в другую форму, в данном случае это список x.Attributes("status").Value

var errcodeList = xml.Descendants("Add")
                     .Where(x => x.Attribute("status").Value != "0")
                     .Select(x => x.Attributes("status").Value);
0 голосов
/ 05 февраля 2019

Вы можете использовать Выберите , чтобы проецировать коллекцию на конкретные результаты, которые вы хотите.Например:

var errcodeList = xml.Descendants("Add").Where(x => x.Attribute("status").Value != "0").Select(x => x.Attribute("status").Value);
...