Я коллекцию структуры, как это:C# Linq преобразования запроса для заказа ObservableCollection
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 ... ... .....
Я хочу заказать by Jet, тогда, где в comp я нахожу, что есть у Владельца, вставляйте строки после основного владельца относительного компонента, затем заказывайте владельцем и в последнем порядке по позиции. Я делаю результат с помощью запроса C# linq, но мне нужно иметь тот же результат в запросе linq VB.NET. 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, но dosn't работы:
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