可观测集合订单的C#Linq查询转换
我有这样一个结构集合:可观测集合订单的C#Linq查询转换,c#,vb.net,linq,C#,Vb.net,Linq,我有这样一个结构集合: Jet Owner Item Comp AAAA AAAA 101 2210 AAAA AAAA 202 2220 AAAA AAAA 301 5550 AAAA AAAA 301 5560 AAAA 2210 101 6789 AAAA 2220 202 ABABA AAAA 5550 301 XXXX0 AAAA
Jet Owner Item Comp
AAAA AAAA 101 2210
AAAA AAAA 202 2220
AAAA AAAA 301 5550
AAAA AAAA 301 5560
AAAA 2210 101 6789
AAAA 2220 202 ABABA
AAAA 5550 301 XXXX0
AAAA 5550 301 XXXX1
AAAA 5560 301 YYYY0
AAAA 5560 301 6612
AAAA 6789 101 ZZZZZ.0
AAAA 6789 101 ZZZZZ.1
AAAA 6789 101 ZZZZZ.2
AAAA 6789 101 ZZZZZ.3
AAAA ABABA 202 TTTTT.0
AAAA ABABA 202 TTTTT.1
AAAA ABABA 202 TTTTT.2
AAAA 6612 301 ZZZZZ.0
AAAA 6612 301 ZZZZZ.1
AAAA 6612 301 ZZZZZ.2
AAAA 6612 301 ZZZZZ.3
AAAB ... ... .....
Jet Owner Item Comp
AAAA AAAA 101 2210
AAAA 2210 101 6789
AAAA 6789 101 ZZZZZ.0
AAAA 6789 101 ZZZZZ.1
AAAA 6789 101 ZZZZZ.2
AAAA 6789 101 ZZZZZ.3
AAAA AAAA 202 2220
AAAA 2220 202 ABABA
AAAA ABABA 202 TTTTT.0
AAAA ABABA 202 TTTTT.1
AAAA ABABA 202 TTTTT.2
AAAA AAAA 301 5550
AAAA 5550 301 XXXX0
AAAA 5550 301 XXXX1
AAAA AAAA 301 5560
AAAA 5560 301 YYYY0
AAAA 5560 301 6612
AAAA 6612 301 ZZZZZ.0
AAAA 6612 301 ZZZZZ.1
AAAA 6612 301 ZZZZZ.2
AAAA 6612 301 ZZZZZ.3
AAAB ... ... .....
我需要订购它,以获得如下结果:
Jet Owner Item Comp
AAAA AAAA 101 2210
AAAA AAAA 202 2220
AAAA AAAA 301 5550
AAAA AAAA 301 5560
AAAA 2210 101 6789
AAAA 2220 202 ABABA
AAAA 5550 301 XXXX0
AAAA 5550 301 XXXX1
AAAA 5560 301 YYYY0
AAAA 5560 301 6612
AAAA 6789 101 ZZZZZ.0
AAAA 6789 101 ZZZZZ.1
AAAA 6789 101 ZZZZZ.2
AAAA 6789 101 ZZZZZ.3
AAAA ABABA 202 TTTTT.0
AAAA ABABA 202 TTTTT.1
AAAA ABABA 202 TTTTT.2
AAAA 6612 301 ZZZZZ.0
AAAA 6612 301 ZZZZZ.1
AAAA 6612 301 ZZZZZ.2
AAAA 6612 301 ZZZZZ.3
AAAB ... ... .....
Jet Owner Item Comp
AAAA AAAA 101 2210
AAAA 2210 101 6789
AAAA 6789 101 ZZZZZ.0
AAAA 6789 101 ZZZZZ.1
AAAA 6789 101 ZZZZZ.2
AAAA 6789 101 ZZZZZ.3
AAAA AAAA 202 2220
AAAA 2220 202 ABABA
AAAA ABABA 202 TTTTT.0
AAAA ABABA 202 TTTTT.1
AAAA ABABA 202 TTTTT.2
AAAA AAAA 301 5550
AAAA 5550 301 XXXX0
AAAA 5550 301 XXXX1
AAAA AAAA 301 5560
AAAA 5560 301 YYYY0
AAAA 5560 301 6612
AAAA 6612 301 ZZZZZ.0
AAAA 6612 301 ZZZZZ.1
AAAA 6612 301 ZZZZZ.2
AAAA 6612 301 ZZZZZ.3
AAAB ... ... .....
我想按Jet订购,然后在comp中找到所有者中的一些,放在相关组件的主要所有者之后的行中,然后按所有者订购,最后按项目订购。我已经使用C#linq查询生成了结果,但是我需要在VB.NET linq查询中具有相同的结果。
C#Linq查询是:
var orderedData =(from d in collection
group d by d.Jet into g
orderby g.Key
from d in g
select new[] {d}.Union(g.Where(c => c.Owner == d.Comp)) into withChildren
from wc in withChildren
orderby wc.Item
select wc).Distinct();
我在VB.NET中尝试过此功能,但不起作用:
Dim orderedData = (From d In collection
Group d By d.Jet Into Group
Order By Group
From d In Group
Select New withChildren With {d}.Union(gr.Where(Function(c) c.Owner = d.Comp)))
from wc in withChildren
Order By wc.pos
Select wc).Distinct
from wc in withChildren
Order By wc.pos
Select wc).Distinct
试试看:
Dim orderedData=(From with children In From g In From d In collectionGroup d By d.JetOrder By g.KeyFrom d In gNew(){d}.Union(g.Where(Function(c)c.Owner=d.Comp))From wc In with childrenorder By wc.Itemwc)。Distinct()