OK, résumons la situation :
J'ai une requête qui me sort une liste d'enregistrement :
1 2 3 4 5 6 7 8 9 10 11 12 13
|
IList<EntityPERTEZONE> l_zonesLosses = new List<EntityPERTEZONE>();
// Extract all ranges of hours which are inside our range of date and ordered as we want
l_zonesLosses = sessiondb.Linq<EntityPERTEZONE>().
Where(r => r.OBJ_TRANCHEHORAIRE.OFCLEUNIK == i_OFCLEUNIK &&
r.OBJ_TRANCHEHORAIRE.DATEDEBUT >= d_beginDate &&
r.OBJ_TRANCHEHORAIRE.DATEFIN <= d_endDate &&
r.OBJ_ZONE.OBJ_ENUMZONE.ENUMZONEVISIBLE == 1).
OrderBy(r => r.OBJ_ZONE.OBJ_ENUMZONE.EZCLEUNIK).
ThenBy(r => r.ZOCLEUNIK).
ThenBy(r => r.THCLEUNIK).
ToList<EntityPERTEZONE>(); |
Cette requête me retourne une liste que j'afficherai dans un tableau, de la forme : Une ligne pour une zone, une colonne par tranche horaire, et la cellule qui contiendra le résultat.
Mais certaines des lignes de mon tableau correspondent à une même zone du type, ZoneTest étant ma zone, TH pour tranche horaire (colonne) :
1 2 3 4
|
TH1 TH2 TH3 TH4 TH5 ...
ZoneTest / 45 / 10 / 20 / 0 / 0 / ...
ZoneTest / 0 / 12 / 8 / 1 / 0 / ... |
Je voudrais obtenir une seule ligne par zone comme ceci :
1 2 3
|
TH1 TH2 TH3 TH4 TH5 ...
ZoneTest / 45 / 22 / 28 / 1 / 0 / ... |
Donc, j'utilise un objet type :
IList<IGrouping<long, EntityPERTEZONE>> o_grouping;
qui va stocker mes groupes. Sur cet objet, j'utilise l'objet résultant de ma premiere requête en lui rajoutant une clause groupBy :
o_grouping = l_zonesLosses.GroupBy(r => r.OBJ_ZONE.ZOCLEUNIK & r.OBJ_ZONE.EZCLEUNIK).ToList();
Puis j'énumère en ajoutant chaque resultat à ma liste, et j'imagine que c'est ici que je fais n'importe quoi :
1 2 3 4 5 6 7 8 9 10 11
|
IList<EntityPERTEZONE> l_zonesLossesGroup = new List<EntityPERTEZONE>();
foreach (var group in o_grouping)
{
var key = group.Key;
List<EntityPERTEZONE> zonesGroups = group.ToList();
foreach (var EntityPerte in zonesGroups)
{
l_zonesLossesGroup.Add(EntityPerte);
}
} |
Ceci ne fonctionne pas, j'ai exactement le même résultat que dans ma première liste sans group by, et voici les causes possibles :
1/ Je n'ai vraisemblablement rien compris à la clause groupBy
2/ En enumerant le contenu via foreach, je casse les groupes et je reviens à ce que j'avais avant. Je n'ai pas compris la forme de l'objet groupBy
3/ Tout est correct mais je groupe sur les mauvaises clés
Any help ?
Partager