2012-12-21 11 views
7

Próbuję uzyskać wartości zagregowane z tabeli danych. Ale nie mogę zrozumieć, jak. Widziałem kilka przykładów w języku C#, ale nie mogłem ich przetłumaczyć na vb.net.Grupa danych za pomocą linq w vb.net

Mam tabeli danych

Month, campaign, sales, leads, gross 
1   1    5   10  1000 
1   2    0   5   0 
2   1    2   0   300 
2   2    1   3   200 

muszę uzyskać wynik:

Month, sales, leads, gross 
1   5  15  1000 
2   3   3   500 

nie chcę do pętli i połączyć wartości ręcznie. Proszę o pomoc

Odpowiedz

9

Chcesz Group by Month? Można użyć Sum podsumować grupy:

Dim query = From row In dt 
     Group row By Month = row.Field(Of Int32)("Month") Into MonthGroup = Group 
     Select New With { 
      Key Month, 
      .Sales = MonthGroup.Sum(Function(r) r.Field(Of Int32)("Sales")), 
      .Leads = MonthGroup.Sum(Function(r) r.Field(Of Int32)("Leads")), 
      .Gross = MonthGroup.Sum(Function(r) r.Field(Of Int32)("Gross")) 
     } 

For Each x In query 
    Console.WriteLine("Month:{0} {1} {2} {3}", x.Month, x.Sales, x.Leads, x.Gross) 
Next 

jest mieszaniną LINQ query- i metody składni.

+0

Dziękuję. Fragment powodował wyjątek podczas przesyłania. Ale kiedy zmieniłem z "Of Int32" na "Of Decimal" wszystko działało jak urok. – Nick

+0

Dziękuję za to, walczyłem z podobnym problemem od wieków – majjam