2009-03-03 8 views
3

J'apprends LINQ en XML et ai besoin de trouver l'existence d'un élément avec un attribut particulier. En ce moment je suis en utilisant:Comment trouver un élément XML par attribut en utilisant 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; 

Je sais qu'il ya une façon plus concise de faire cela, probablement à l'aide Tout(), mais je ne suis pas sûr de savoir comment réécrire la requête pour l'utiliser. Est-ce que quelqu'un a de bons conseils? Merci.

Répondre

2

Merci aux deux autres réponses. J'ai combiné la concision de l'un avec l'exactitude d'un autre, puis remué et est venu avec cela qui fonctionne bien:

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(); 

si vous le voulez sur une seule ligne

+0

Pourriez-vous s'il vous plaît donner une autre réponse où tout n'est pas sur une seule ligne et est plus facile à lire? –

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