LINQ к дополнительному запросу элемента XML

При попытке установить пакет самостоятельно появляется та же ошибка.

Тем не менее, при поиске этого пакета на pypi.org, кажется, что последняя выпущенная версия была в 2012 году, и ссылка там на домашнюю страницу проекта приводит к почти полностью пустой веб-странице. Таким образом, я бы предположил, что этот пакет больше не существует.

14
задан itsmatt 10 November 2008 в 15:50
поделиться

3 ответа

XElement на самом деле имеет интересные явные операторы преобразования , которые делают правильную вещь в этом случае.

Так, редко на самом деле необходимо получить доступ .Value свойство.

Это - все, в чем Вы нуждаетесь для своей проекции:

var items =
    from g in xDocument.Root.Descendants("Group").Elements("Entry")
    select new
    {
        name = (string) g.Element("Name"),
        id = (string) g.Element("ID") ?? "none",
    };

И если Вы предпочли бы использовать значение ID как целое число в Вашем анонимном типе:

var items =
    from g in xDocument.Root.Descendants("Group").Elements("Entry")
    select new
    {
        name = (string) g.Element("Name"),
        id = (int?) g.Element("ID"),
    };
23
ответ дан 1 December 2019 в 10:05
поделиться

Как насчет:

var items = from g in xDocument.Root.Descendants("Group").Elements("Entry")
            let idEl = g.Element("ID")
            select new
            {
                name = (string)g.element("Name").Value,
                id = idEl == null ? "none" : idEl.Value;
            };

, если это блюет, то FirstOrDefault() и т.д. могло бы быть полезным, еще просто, используют дополнительный метод (как уже предложено).

1
ответ дан 1 December 2019 в 10:05
поделиться

В аналогичной ситуации я использовал дополнительный метод:

    public static string OptionalElement(this XElement actionElement, string elementName)
    {
        var element = actionElement.Element(elementName);
        return (element != null) ? element.Value : null;
    }

использование:

    id = g.OptionalElement("ID") ?? "none"
3
ответ дан 1 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: