【发布时间】:2011-12-20 19:50:59
【问题描述】:
我想使用 C#.net 读取一个 xml 文件,并在 LINQ 的帮助下,我想根据 INSTANCE 和 CINSTANCE 值对 xml 中的节点进行分组。我怎样才能做到这一点? 这是我的源架构:
<XYZ>
<TYPE>A</TYPE>
<INSTANCE>1357599</INSTANCE>
<CHILD>DESCRIPTION</CHILD>
<CINSTANCE>PQR</CINSTANCE>
<CPOS>0000</CPOS>
</XYZ>
<XYZ>
<TYPE>GP</TYPE>
<INSTANCE>1472422</INSTANCE>
<CHILD>A</CHILD>
<CINSTANCE>1357599</CINSTANCE>
<CPOS>0010</CPOS>
</XYZ>
<XYZ>
<TYPE>GP</TYPE>
<INSTANCE>1472427</INSTANCE>
<CHILD>A</CHILD>
<CINSTANCE>1357599</CINSTANCE>
<CPOS>0010</CPOS>
</XYZ>
<XYZ>
<TYPE>A</TYPE>
<INSTANCE>1357600</INSTANCE>
<CHILD>DESCRIPTION</CHILD>
<CINSTANCE>PQR</CINSTANCE>
<CPOS>0000</CPOS>
</XYZ>
<XYZ>
<TYPE>GP</TYPE>
<INSTANCE>1472425</INSTANCE>
<CHILD>A</CHILD>
<CINSTANCE>1357600</CINSTANCE>
<CPOS>0010</CPOS>
</XYZ>
<XYZ>
<TYPE>GP</TYPE>
<INSTANCE>1472426</INSTANCE>
<CHILD>A</CHILD>
<CINSTANCE>1357600</CINSTANCE>
<CPOS>0010</CPOS>
</XYZ>
这应该是我的输出:
<Group>
<XYZ>
<TYPE>A</TYPE>
<INSTANCE>1357599</INSTANCE>
<CHILD>DESCRIPTION</CHILD>
<CINSTANCE>PQR</CINSTANCE>
<CPOS>0000</CPOS>
</XYZ>
<XYZ>
<TYPE>GP</TYPE>
<INSTANCE>1472422</INSTANCE>
<CHILD>A</CHILD>
<CINSTANCE>1357599</CINSTANCE>
<CPOS>0010</CPOS>
</XYZ>
<XYZ>
<TYPE>GP</TYPE>
<INSTANCE>1472427</INSTANCE>
<CHILD>A</CHILD>
<CINSTANCE>1357599</CINSTANCE>
<CPOS>0010</CPOS>
</XYZ>
</Group>
<Group>
<XYZ>
<TYPE>A</TYPE>
<INSTANCE>1357600</INSTANCE>
<CHILD>DESCRIPTION</CHILD>
<CINSTANCE>PQR</CINSTANCE>
<CPOS>0000</CPOS>
</XYZ>
<XYZ>
<TYPE>GP</TYPE>
<INSTANCE>1472425</INSTANCE>
<CHILD>A</CHILD>
<CINSTANCE>1357600</CINSTANCE>
<CPOS>0010</CPOS>
</XYZ>
<XYZ>
<TYPE>GP</TYPE>
<INSTANCE>1472426</INSTANCE>
<CHILD>A</CHILD>
<CINSTANCE>1357600</CINSTANCE>
<CPOS>0010</CPOS>
</XYZ>
</Group>
我需要根据INSTANCE==CINSTANCE.. 对 XYZ 节点进行分组。无论如何要为此编写逻辑吗?
【问题讨论】:
-
linqpad.net Linqpad 在“示例”选项卡中提供了有关 linq to xml 的全套示例/教程。