Group by Sum et count sur des objets
Bonjour,
Voilà j'ai trois objets
GenRsaErreur de propriétes CodeErreur et LibelleErreur et de constructeur
Code:
Public Sub New(ByVal codErreur As eCodeErreursGenRsa)
eCodeErreursGenRsa est une énumération
GenRsaRejet avec entre autre les propriétés
Montant entier
Erreur() GenRsaErreur
Et GenRsaRejetStatistique ayant les propriétés suivantes
Erreur
Nombre
NombreTotal
Montant
Je cherche à creer une liste de GenRsaRejetStatistique à partir d'une liste de
GenRsaRejet
GenRsaRejet doit contenir pour chaque code erreur de la liste GenrsaRejet
Code:
1 2
| Montant=Somme(genrsaRejet.Montant)
Nombre=Somme(GenrsaRejet.Nombre) |
En Sql cela donnerait
Code:
1 2 3
| Select codeErreur, sum(Montant) as montant, count(*) as Nombre
from genrsarejet
group by codeErreur |
Voilà mon code qui ne compile pas le moins du monde.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Public Shared Function GetListGenRsaRejetStatistique(ByVal listGenrsaRejetsFiltree As List(Of GenRsaRejet), ByVal typePrestation As [DIM].DimTypePrestation) As List(Of GenRsaRejetStatistique)
Dim dicErreur As Dictionary(Of GenRsaErreur.eCodeErreursGenRsa, String)
dicErreur = GenRsaErreur.DicoErreurMessageParType(typePrestation)
Dim iMontantTotal As Integer?
Dim iNombreTotal As Integer
'Dim errCode As GenRsaErreur.eCodeErreursGenRsa
iMontantTotal = listGenrsaRejetsFiltree.Sum(Function(r As GenRsaRejet) r.Montant)
If iMontantTotal Is Nothing Then
iMontantTotal = 0
End If
iNombreTotal = listGenrsaRejetsFiltree.Count
Dim result = From lr In listGenrsaRejetsFiltree _
Group By lr.Erreur.CodeErreur Into somme = Sum(lr.Montant)
Select New GenRsaRejetStatistique With {.Erreur = New GenRsaErreur(lr.Erreur.CodeErreur), .Montant = somme, .NombreTotal = iNombreTotal}
Return result.ToList()
End Function |
Merci de votre aide
Soazig