Linq to XML selecionando uma base de nó em um valor de atributo

Tenho um arquivo xml que retorna um conjunto de elementos únicos por um valor de atributo. Isso apresenta um problema, pois não consigo selecionar um nó pelo nome:

<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> 

Estou usando o linq para preencher uma classe "Produto". Eu sou capaz de selecionar os elementos por posição, no entanto, isso se torna um problema se o nó não existir. Existe uma maneira de selecionar um nó com base no valor de seu atributo? No exemplo abaixo, posso obter o nó arr se o atributo @name = "ATR_FamilyName"? No xpath seria:

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

aqui está minha consulta 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....                              
              };   

questionAnswers(3)

yourAnswerToTheQuestion