如何使用LINQ to XML按属性查找XML元素?

时间:2009-03-03 15:24:01

标签: .net xml linq linq-to-xml

我正在学习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 个答案:

答案 0 :(得分:6)

groupCollectionXml.Elements("Group").Any(
    vw=>(string)vw.Attribute("Name") == groupName
  );

答案 1 :(得分:2)

groupCollectionXml.
    Elements("Group").
    Where(item=>String.
        Equals(item.Attribute("Name"), groupName, OrdinalIgnoreCase)).
    Any();

如果你想要一行

答案 2 :(得分:2)

感谢另外两个答案。我将一个人的简洁性与另一个人的正确性结合起来,然后激起并提出了这个有效的方法:

groupCollectionXml.Elements("Group").Any(
  vw => string.Equals(vw.Attribute("Name").Value, groupName, StringComparison.OrdinalIgnoreCase)
);