Grettings!Linq問題:合併條款
我有一些XML,看起來像這樣:
<Root>
<SectionA>
<Item id="111">
<Options>
<Option val="a" cat="zzz">
<Package value="apple" />
<Feature value="avacado" />
</Option>
<Option val="b" cat="yyy">
<Package value="banana" />
<Feature value="blueberry" />
</Option>
</Options>
</Item>
<Item id="222">
<Options>
<Option val="c" cat="xxx">
<Package value="carrot" />
<Feature value="cucumber" />
</Option>
<Option val="d" cat="www">
<Package value="dairy" />
<Feature value="durom" />
</Option>
</Options>
</Item>
</SectionA>
<SectionB>
.
.
.
</SectionB>
</Root>
我想基於項目是「111」的ID屬性,一個選項是「的VAL屬性來獲得包和特徵值一個」。
我不確定從哪裏開始。我可以使用where來選擇ITEM節點,但我不確定如何將它與OPTION節點上的where子句結合起來。有任何想法嗎?使用的SelectMany
var doc = XDocument.Parse(xml);
var items = from i in doc.Descendants("Item")
from o in i.Descendants("Option")
where i.Attribute("id").Value == "111"
&& o.Attribute("val").Value == "a"
select new {
Package = i.Descendants("Package").Attribute("value").Value,
Feature = i.Descendants("Feature").Attribute("value").Value
};
+1,因爲你的管道看起來效率最高 – bendewey 2009-04-17 02:28:26