Nous devons stocker les données du formulaire ci-dessous logique dans une classe:requête Linq à groupe et somme sur l'objet dictionnaire
"description 1", "activity A", "service A", Month 1 cost, month 2 cost, month 3 cost etc....
J'ai donc un objet de classe, comme ci-dessous:
Public Class EntityTableRow
Public Description As String
Public Activity As String
Public M1 as Double
Public M2 as Double
.....
End Class
La propriété M ... contiendrait des coûts mensuels en fonction du nombre de mois écoulés dans les données source (source de données Excel). Logiquement, la classe ci-dessus contiendrait des données similaires à la forme logique ci-dessus
Maintenant, je dois regrouper les lignes en fonction des mêmes colonnes et obtenir les coûts mensuels résumés.
Pour cela, je suis en train d'utiliser le ci-dessous requête Linq:
Dim a As New List(Of EntityTableRow)
a = myTable1.TableRows
Dim lFinal2 = From el In a Group el By Key = New With {Key el.Description, Key el.Activity} Into Group _
Select New With {.Activity = Key.Description, _
.Country = Key.Activity, _
.M1 = Group.Sum(Function(x) x.M1), _
.M2 = Group.Sum(Function(x) x.M2)}
Cela semble fonctionner très bien, maintenant comment puis-je changer la requête Linq ci-dessus, pour la classe modifiée ci-dessous, où j'ai besoin pour stocker les coûts mensuels dans le dictionnaire et toujours obtenir des lignes groupées, avec sommation sur différentes colonnes de mois?
Public Class EntityTableRow
Public Description As String
Public Activity As String
Public MonthCosts As New Dictionary(Of Integer, Double)
End Class
Si vos valeurs de coût sont financières en utilisant «Double» est probablement une mauvaise idée. 'Decimal' est mieux adapté. – Jodrell
La liste des clés dans le dictionnaire 'MonthCosts' diffère-t-elle entre les éléments du même groupe? – MarcinJuraszek