Linq to XML de la sélection d'un nœud sur la base d'une valeur d'attribut

J'ai un fichier xml qui retourne un ensemble d'éléments qui sont uniques par une valeur d'attribut. Cela pose un problème, que je ne peux pas sélectionner un nœud par son nom:

<doc>
    <float name="score">1.2873721</float>
    <arr name="2_category">
        <long>3021</long>
    </arr>
    <arr name="ATR_FamilyName">
        <str>Some Cookbook </str>
    </arr>
    <arr name="ATR_IsFamily">
        <str>0</str>
    </arr>
    <arr name="ATR_SellPrice">
        <str>49.95</str>
    </arr>
    <arr name="ATR_VendorId">
        <str>ABC</str>
    </arr>
    <arr name="ATR_VendorName">
        <str>WROX</str>
    </arr>      
</doc> 

Je suis à l'aide de linq pour remplir un "Produit" de la classe. Je suis en mesure de sélectionner les éléments en position, cependant cela devient un problème si le nœud n'existe pas. Est-il un moyen pour sélectionner un nœud basée sur la valeur de ses attributs? Dans l'exemple ci-dessous, puis-je obtenir de l'arr nœud si l' @attribut name = "ATR_FamilyName"? Dans xpath:

doc/arr[@name = 'ATR_FamilyName']/str

voici ma requête linq to xml:

var query = from rt in results
   where (String)rt.Descendants().ElementAt(5).Element("str").Value == "0"
   select new Product.Product
             {
                FamilyName = (String)rt.Descendants().ElementAt(3).Value
                //doc/arr[@name = 'ATR_FamilyName']/str - select Family Name is arr/@name 'ATR_FamilyName'                              
                MorePropertiestoset....                              
              };   

OriginalL'auteur PhillyNJ | 2011-10-25