一直在试图弄清楚如何执行linq xml查询.
我希望查询返回以下xml中category/name ="First Category"的所有"product"项的列表
<catalog>
<category>
<name>First Category</name>
<order>0</order>
<product>
<name>First Product</name>
<order>0</order>
</product>
<product>
<name>3 Product</name>
<order>2</order>
</product>
<product>
<name>2 Product</name>
<order>1</order>
</product>
</category>
</catalog>
Run Code Online (Sandbox Code Playgroud)
像这样:
XDocument doc = XDocument.Parse(xml);
var qry = from cat in doc.Root.Elements("category")
where (string)cat.Element("name") == "First Category"
from prod in cat.Elements("product")
select prod;
Run Code Online (Sandbox Code Playgroud)
或者也许是匿名类型:
XDocument doc = XDocument.Parse(xml);
var qry = from cat in doc.Root.Elements("category")
where (string)cat.Element("name") == "First Category"
from prod in cat.Elements("product")
select new
{
Name = (string)prod.Element("name"),
Order = (int)prod.Element("order")
};
foreach (var prod in qry)
{
Console.WriteLine("{0}: {1}", prod.Order, prod.Name);
}
Run Code Online (Sandbox Code Playgroud)