Linq to XML, sélectionnez tous les attributs et leurs valeurs pour un noeud donné

J'ai un fichier de mappage xml qui ressemble à quelque chose comme ceci

<colourMappings>
<model name="modelX">
<mapping colour="White" configCode="1"></mapping>
<mapping colour="Aluminium" configCode="2"></mapping>
<mapping colour="Black" configCode="3"></mapping>
<mapping colour="Blue" configCode="4"></mapping>
<mapping colour="White Pearl" configCode="5"></mapping>
<mapping colour="Graphite" configCode="6"></mapping>
<mapping colour="Gunmetal" configCode="7"></mapping>
<mapping colour="Indigo" configCode="8"></mapping>
<mapping colour="Red" configCode="9"></mapping>
</model>
<model name="modelY">
<mapping colour="White" configCode="1" stConfigCode= "xx" dgConfigCode="hj"></mapping>
<mapping colour="Aluminium" configCode="2" stConfigCode= "xy" dgConfigCode="gh"></mapping>
<mapping colour="Black" configCode="3" stConfigCode= "xt" dgConfigCode="fg"></mapping>
<mapping colour="Blue" configCode="4" stConfigCode= "sd" dgConfigCode="fg"></mapping>
<mapping colour="White Pearl" configCode="5" stConfigCode= "df" dgConfigCode="df"></mapping>
<mapping colour="Graphite" configCode="6" stConfigCode= "xc" dgConfigCode="df"></mapping>
<mapping colour="Gunmetal" configCode="7"  stConfigCode= "cv" dgConfigCode="cv"></mapping>
<mapping colour="Indigo" configCode="8"  stConfigCode= "zx" dgConfigCode="vb"></mapping>
<mapping colour="Red" configCode="9"  stConfigCode= "fg" dgConfigCode="cv"></mapping>
</model>
</colourMappings>

Je veux être en mesure de sortir de tous les attributs et leurs valeurs donné un nom de modèle et de couleur

par exemple

donné ModelY et Blanc, je voudrais obtenir configCode="1" stConfigCode= "xx" dgConfigCode="hj"
Cela pourrait être dans n'importe quelle structure de tableau, liste, quelle que soit

J'ai été en utilisant Linq to XML, mais ne peut pas obtenir la syntaxe correcte

XDocument mappings = XDocument.Load(@"D:\colour_mappings.xml");
var q = from c in mappings.Descendants("model")
where (string)c.Attribute("name") == "modelY" && (string)c.Descendants("mapping").Attributes("colour").FirstOrDefault() == "White"
select c.Attributes();

quelqu'un sait comment faire cela?

Heureux d'utiliser n'importe quelle méthode, n'a pas nécessairement besoin d'être Linq

InformationsquelleAutor ChrisCa | 2010-07-26