gpt4 book ai didi

c# - Linq to XDocument 按子集分组

转载 作者:太空狗 更新时间:2023-10-30 00:56:00 24 4
gpt4 key购买 nike

我正在寻找一个 linq to Xdoc 查询来按 XML 节点的子集进行分组。我只能让这个工作返回数据的一个子集,但我需要整个 xml 文档传回,只有特定的节点被分组。

<Root>
<Elementname1>
</Elementname1>
<Elementname2>
</Elementname2>
<Elementname3 attrname="test1">
<Child>
</Child>
</Elementname3>
<Elementname3 attrname="test1">
<Child>
</Child>
</Elementname3>
</Root>

这段代码:

var result =
from row in xDoc.Descendants("Elementname3")
group row by (string)row.Attribute("attrname") into g
select g.First();

返回:

<Elementname3 attrname="test1">
<Child></Child>
</Elementname3>

期待:

<Root>
<Elementname1>
</Elementname1>
<Elementname2>
</Elementname2>
<Elementname3 attrname="test1">
<Child>
</Child>
</Elementname3>
</Root>

我明白了,因为后代元素是从 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()
)
);

关于c# - Linq to XDocument 按子集分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8764991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com