J'ai ce tableauobtenir la somme du groupe maxs par
EquipmentId Value Date
1 2 11/04/2013
1 1 11/04/2013
2 3 11/04/2013
2 2 10/04/2013
2 5 10/04/2013
3 1 10/04/2013
3 3 11/04/2013
Je veux regrouper ces éléments par date, et un dictionnaire avec la date comme une clé et la somme des maxs du tout les valeurs des équipements en ce jour-là
le résultat serait comme ça
[10/04/2013: 6] // 6 = 5 (as the max of values of the the equipmetId 2) + 1 (as the max of values of the the equipmetId 3)
[11/04/2013: 5] // 5 = 2(as the max of values of the the equipmetId 1) + 3(as the max of values of the the equipmetId 3)
J'ai réussi à faire la requête pour obtenir cela sans la somme, ce qui signifie que pour un seul équipement.
var consumptionValues = (from c in context.ConsumptionSet
join pi in context.PropertiesInstanceSet on c.PropertiesInstanceID equals pi.PropertiesInstanceID
join ep in context.EquipmentPropertiesSet on pi.EquipmentPropertiesID equals ep.EquipmentPropertiesID
join e in context.EquipmentSet on ep.EquipmentID equals e.EquipmentID
where (e.EquipmentID == equipmentId && pi.ProprietesName == ProprietesName.Energy && c.Date <= DateTime.Now && c.Date >= firstDayDate)
group c by SqlFunctions.DatePart("weekday", c.Date) into grp
select new
{
dayOfWeek = (DayOfWeek)grp.Key.Value - 1,
value = grp.Max(c => c.Value),
}).ToDictionary(c => c.dayOfWeek.ToString(), c => c.value);
C'est la requête complète avec toutes les jointures, dans l'exemple je viens de donner un exemple simplifié.
Est-il possible de le faire en une seule requête?
Est-il à des entités ou LINQ LINQ to SQL? – MarcinJuraszek