1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
Public Class ColParutionsMonthYear
'Normalement ça se fait pas les champs publics mais c'est juste pour le test
Public FournisseurId, NombreParution As Integer
Public Fournisseur, Annonceur, Campagne, Media, Format As String
Public MontantNet, Commission As Decimal
End Class
Module Essai
Public Sub Test()
Dim tmpcolParutionsMonthYear() As ColParutionsMonthYear =
{
New ColParutionsMonthYear With {.FournisseurId = 1, .Campagne = "1", .NombreParution = 11, .MontantNet = 11.11D},
New ColParutionsMonthYear With {.FournisseurId = 1, .Campagne = "2", .NombreParution = 12, .MontantNet = 12.12D},
New ColParutionsMonthYear With {.FournisseurId = 2, .Campagne = "1", .NombreParution = 21, .MontantNet = 21.21D},
New ColParutionsMonthYear With {.FournisseurId = 3, .Campagne = "3", .NombreParution = 33, .MontantNet = 33.33D},
New ColParutionsMonthYear With {.FournisseurId = 1, .Campagne = "1", .NombreParution = 1010, .MontantNet = 1010.101D}
}
Dim result =
(
From p In tmpcolParutionsMonthYear
Group Join p2 In tmpcolParutionsMonthYear
On p.FournisseurId Equals p2.FournisseurId And p.Campagne Equals p2.Campagne
Into parution = Sum(p2.NombreParution),
net = Sum(p2.MontantNet)
Select New ColParutionsMonthYear With
{
.FournisseurId = p.FournisseurId,
.Fournisseur = p.Fournisseur,
.Annonceur = p.Annonceur,
.Campagne = p.Campagne,
.Media = p.Media,
.Format = p.Format,
.NombreParution = parution,
.MontantNet = net,
.Commission = net * 8 / 100
}
).Distinct(New ParutionComparer).ToList
End Sub
End Module
Public Class ParutionComparer
Implements IEqualityComparer(Of ColParutionsMonthYear)
Public Overloads Function Equals(ByVal x As ColParutionsMonthYear, ByVal y As ColParutionsMonthYear) As Boolean Implements IEqualityComparer(Of ColParutionsMonthYear).Equals
Return x.FournisseurId = y.FournisseurId AndAlso x.Campagne = y.Campagne
End Function
Public Overloads Function GetHashCode(ByVal obj As ColParutionsMonthYear) As Integer Implements IEqualityComparer(Of ColParutionsMonthYear).GetHashCode
Return obj.GetHashCode
End Function
End Class |
Partager