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
Vous devez vous connecter pour publier un commentaire.
Mise à jour
Résumées dans une méthode:
que je suis pressé par le temps, je vais utiliser un 2 étapes
Mais serais intéressé de savoir si c'est possible en une seule requête
Juste parce que j'ai comme un défi, ici, il est en une seule requête:
Je sais que c'est vieux maintenant, mais je pense que la façon de résoudre ce problème sans faire de traitement plus que nécessaire ressemble à quelque chose comme ceci:
Dans le format de la requête, ce serait: