我有一個XML映射文件,它看起來像這樣的LINQ to XML,選擇一個給定節點的所有屬性和值
<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>
我希望能夠拉出來的所有屬性,並給出它們的值型號名稱和顏色
eg鑑於ModelY和白色
,我想獲得configCode = 「1」 stConfigCode = 「XX」 dgConfigCode = 「HJ」 這可能是在任何結構 - 數組,列表,無論
我一直使用Linq to XML但無法獲得正確的語法
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();
任何人都知道如何做到這一點?
樂於使用任何方法,並不一定需要的LINQ
謝謝 - 這不完全是我需要的。你的一個返回每個映射的所有屬性 我只想要ModelY中單個映射的屬性具有白色 Decierded做它作爲2階段查詢 - 見下面 – ChrisCa 2010-07-26 10:38:39
@Christo毛皮:對不起,我的錯誤,只是更新了代碼,所以它應該現在工作:) – 2010-07-26 10:54:27
謝謝 - 我得出了同樣的結論,你做了2步 – ChrisCa 2010-07-26 10:56:48