2014-09-21 64 views
0

我在等形式的XML:选择的XElement与LINQ集团的子节点通过

<Test> 
    <Parent Value1="1" Value2="2"> 
    <Child value3="x"/> 
    </Parent> 
    <Parent Value1="1" Value2="2"> 
    <Child value3="y"/> 
    </Parent> 
    <Parent Value1="a" Value2="b"> 
    <Child value3="z"/> 
    </Parent> 
</Test> 

我试图使用xelements和LINQ to组下具有相同的属性值的父节点的子节点。例如: -

<Test> 
    <Parent Value1="1" Value2="2"> 
    <Child value3="x"/> 
    <Child value3="y"/> 
    </Parent> 
    <Parent Value1="a" Value2="b"> 
    <Child value3="z"/> 
    </Parent> 
</Test> 

到目前为止,这是我的本钱:

Dim l_xeXML As XElement = <Test> 
            <Parent Value1="1" Value2="2"> 
             <Child value3=""/> 
            </Parent> 
            <Parent Value1="1" Value2="2"> 
             <Child value3=""/> 
            </Parent> 
            <Parent Value1="a" Value2="b"> 
             <Child value3=""/> 
            </Parent> 
           </Test> 

    Dim l_xeGROUPED As XElement = <Test> 
             <%= From l_xeExample As XElement In l_xeXML...<Parent> 
              Group l_xeExample By Key = New With {Key [email protected], Key [email protected]} Into Group 
              Select l_GROUPED = New With {.Value1 = Key.Value1, .Value2 = Key.Value2} 
              Select <Parent Value1=<%= l_GROUPED.Value1 %> Value2=<%= l_GROUPED.Value2 %>> 
                <!-- Can't work out what to put here --> 
               </Parent> %> 

            </Test> 

    Debug.Print(l_xeGROUPED.ToString) 

上线<!-- Can't work out what to put here -->,我试图把<%= l_xeExample.<Child> %>但我得到一个错误,说l_xeExample不是范围之内。

任何人都可以帮忙吗?

在此先感谢

回答

1

这将产生所需的输出:

....... 
....... 
Dim l_xeGROUPED As XElement = 
    <Test> 
      <%= From l_xeExample As XElement In l_xeXML...<Parent> 
       Group l_xeExample By Key = New With {Key [email protected], Key [email protected]} 
       Into Parent = Group 
       Select <Parent Value1=<%= Key.Value1 %> Value2=<%= Key.Value2 %>> 
         <%= From g As XElement In Parent.<Child> 
          Select g 
         %> 
        </Parent> %> 
     </Test> 
Debug.Print(l_xeGROUPED.ToString) 
+0

@stormCloud任何问题,这种做法? – har07 2014-09-24 13:04:08

+0

对不起 - 已离开,非常感谢您的方法,它工作正常。答案接受并upvoted :) – stormCloud 2014-09-24 23:40:19