我已尝试为我的问题找到解决方案,但我在这方面(Linq、XML)的知识相当有限。 :( 找到一个simular construction ,但我需要稍微复杂一点的排序方式。
考虑以下 XML 文档:
<Envelope>
<Body>
<Table>
<Trans>
<B>1</B>
<A>3</A>
<C>5</C>
</Trans>
<Trans>
<D>1</D>
<A>6</A>
<C>3</C>
</Trans>
<Trans>
<A>1</A>
<C>3</C>
<B>5</B>
</Trans>
</Table>
</Body>
<Envelope>
有什么方法可以使用 C#/Linq 对
更新 我有一个文件,这就是我要完成的。 ;)
<Envelope>
<Body>
<Table>
<Trans>
<A>3</A>
<B>1</B>
<C>5</C>
</Trans>
<Trans>
<A>6</A>
<C>3</C>
<D>1</D>
</Trans>
<Trans>
<A>1</A>
<B>5</B>
<C>3</C>
</Trans>
</Table>
</Body>
<Envelope>
最佳答案
这实际上取决于您到底想做什么(按顺序处理它们,或重新排序 XML?)以及您所说的“排序”到底是什么(按标签名称排序?按值排序?)。
如果您只想按顺序处理它们,这就是您可以对每个 <Trans>
中的所有元素进行排序的方法按值( <D>1</D>
在 <A>6</A>
之前):
XDocument doc = /* load up your XML */
var sorted = from trans in doc.Descendants("Trans")
select trans.Children().OrderBy(c => int.Parse(c.Value)).ToArray();
或者,这里是按标签名称排序的方法( <A>6</A>
在 <D>1</D>
之前):
var sorted = from trans in doc.Descendants("Trans")
select trans.Children().OrderBy(c => c.Name.LocalName).ToArray();
通过以上,sorted
将是数组的可枚举集合。集合中的每个数组代表一个 <Trans>
,每个这样的数组都包含 <Trans>
的子数组按顺序。
关于c# - 使用 Linq 对 XML 进行复杂排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11117117/