2012-04-12 2 views
1

Я коллекцию структуры, как это: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 

ответ

0

Попробуйте:

Dim orderedData = (From withChildren 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 withChildrenOrder By wc.Itemwc).Distinct()

Смежные вопросы