2017-06-07 5 views
0

je créer un LINQ permettant de sélection de tabRealisation gauche rejoindre tabRealisationvb LINQ choisir entre deux datatables en utilisant jointure gauche avec regroupement et de donner Somme

Dim query = 
    (From r In tabRealisation.AsEnumerable 
    Group Join p In tabPrevision.AsEnumerable 
    On r.Field(Of Integer)("code_part") Equals p.Field(Of Integer)("code_part") 
    Into Group 
    Let p = Group.FirstOrDefault 
    Select 
      nom_ville = r.Field(Of String)("nom_ville"), 
      Designation_part = r.Field(Of String)("Designation_part"), 
      NbrR = r.Field(Of Integer)("UniteVendu"), 
      CaR = r.Field(Of Double?)("CAVendu"),   
      NbrP = p.Field(Of Integer)("UniteVentePrev"), 
      CaP = p.Field(Of Double?)("CAVentePrev")  
      ).ToList 

Mais ce que je veux est de transformer cette requête pour obtenir Sum("UniteVendu"), Sum("CAVendu") ... regroupement par "code_part"

Répondre

0

Essayez cette

Dim query = 
     (From r In tabRealisation.AsEnumerable 
     Join p In tabPrevision.AsEnumerable 
     On r.Field(Of Integer)("code_part") Equals p.Field(Of Integer)("code_part") 
     Select 
       nom_ville = r.Field(Of String)("nom_ville"), 
       Designation_part = r.Field(Of String)("Designation_part"), 
       NbrR = r.Field(Of Integer)("UniteVendu"), 
       CaR = r.Field(Of Double?)("CAVendu"), 
       NbrP = p.Field(Of Integer)("UniteVentePrev"), 
       CaP = p.Field(Of Double?)("CAVentePrev"), 
       codePart = r.Field(Of Integer)("code_part") 
     ).GroupBy(Function(x) x.codePart).Select(Function(x) New With { _ 
                 .codepart = x.Key, 
                 .NbrRSum = x.Sum(Function(y) y.NbrR), 
                 .CarSum = x.Sum(Function(y) y.CaR) 
               ).ToList()