Как найти элемент XML по атрибуту, используя LINQ to XML? - PullRequest
3 голосов
/ 03 марта 2009

Я изучаю LINQ to XML и мне нужно найти существование элемента с определенным атрибутом. На данный момент я использую:

XElement groupCollectionXml = XElement.Parse(groupCollection.Xml);
IEnumerable<XElement> groupFind =
    from vw in groupCollectionXml.Elements("Group")
    where (string) vw.Attribute("Name") == groupName
    select vw;

if (groupFind.Count() == 0)
    return false;
else
    return true;

Я знаю, что есть более краткий способ сделать это, возможно, используя Any (), но я не уверен, как переписать запрос, чтобы использовать его. У кого-нибудь есть хороший совет? Спасибо.

Ответы [ 3 ]

6 голосов
/ 03 марта 2009
groupCollectionXml.Elements("Group").Any(
    vw=>(string)vw.Attribute("Name") == groupName
  );
2 голосов
/ 30 марта 2009

Благодаря двум другим ответам. Я соединил краткость одного с правильностью другого, затем пошевелился и придумал то, что хорошо работает:

groupCollectionXml.Elements("Group").Any(
  vw => string.Equals(vw.Attribute("Name").Value, groupName, StringComparison.OrdinalIgnoreCase)
);
2 голосов
/ 03 марта 2009
groupCollectionXml.
    Elements("Group").
    Where(item=>String.
        Equals(item.Attribute("Name"), groupName, OrdinalIgnoreCase)).
    Any();

если вы хотите все это в одну строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...