LINQ: Получить атрибут с любым пространством имен, кроме определенного имени - PullRequest
2 голосов
/ 17 ноября 2008

Мне нужно иметь возможность получить один конкретный атрибут из элемента с определенным локальным именем, но с любым пространством имен (если вы знакомы с XMPP, вы поймете почему) Любые идеи кроме написания моих собственных (расширений перечислителя или единственного выбора) методов?

У меня есть следующее, но мне это совсем не нравится:

        XAttribute from = (from c in elem.Attributes()
                           where c.Name.LocalName == "from"
                           select c).FirstOrDefault<XAttribute>();

        XAttribute to = (from c in elem.Attributes()
                         where c.Name.LocalName == "to"
                         select c).FirstOrDefault<XAttribute>();

изменить: хотелось бы что-то вроде:

        string val = (string)elem.Attribute("{*}to");

решение:

        XAttribute from = elem.Attributes()
            .FirstOrDefault(a => a.Name.LocalName == "from");

        XAttribute to = elem.Attributes()
            .FirstOrDefault(a => a.Name.LocalName == "to");

1 Ответ

4 голосов
/ 17 ноября 2008

Если вам не нравится синтаксис, вы можете использовать этот;

elem.Attributes().FirstOrDefault(a=>a.Name.LocalName == "from");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...