我正在寻找一个linq to Xdoc查询来按XML节点的子集进行分组.我只能使这个工作返回数据的子集但我需要传回的整个xml文档只有特定的节点分组.
<Root>
<Elementname1>
</Elementname1>
<Elementname2>
</Elementname2>
<Elementname3 attrname="test1">
<Child>
</Child>
</Elementname3>
<Elementname3 attrname="test1">
<Child>
</Child>
</Elementname3>
</Root>
Run Code Online (Sandbox Code Playgroud)
这段代码:
var result =
from row in xDoc.Descendants("Elementname3")
group row by (string)row.Attribute("attrname") into g
select g.First();
Run Code Online (Sandbox Code Playgroud)
收益:
<Elementname3 attrname="test1">
<Child></Child>
</Elementname3>
Run Code Online (Sandbox Code Playgroud)
期待:
<Root>
<Elementname1>
</Elementname1>
<Elementname2>
</Elementname2>
<Elementname3 attrname="test1">
<Child>
</Child>
</Elementname3>
</Root>
Run Code Online (Sandbox Code Playgroud)
我明白,因为后代元素从elementname3开始; 只是不确定如何解释linq查询以按预期开始根节点和组.
试试这个:
var result = new XDocument(
new XElement("Root",
from x in doc.Root.Elements()
group x by new { x.Name, Attr = (string)x.Attribute("attrname") } into g
select g.First()
)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1277 次 |
| 最近记录: |