2009-03-03 3 views
3

Я изучаю LINQ для XML и должен найти существование элемента с определенным атрибутом. На данный момент я использую:Как найти элемент 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(), но я не знаю, как переписать запрос, чтобы использовать его. У кого-нибудь есть хороший совет? Благодарю.

ответ

2

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

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

если вы хотите все это на одной линии

+0

Не могли бы вы дать еще один ответ, где это не все на одной линии и его легче читать? –

6
groupCollectionXml.Elements("Group").Any(
    vw=>(string)vw.Attribute("Name") == groupName 
); 
Смежные вопросы