Ok, c'est un peu une requête désordonnée et je n'ai que peu de succès avec elle. J'ai une liste d'une classe Foo qui a une propriété datetime et d'autres données. J'ai une classe/rangée pour presque toutes les minutes, avec quelques manques et quelques jours entiers manquant comme des vacances ou un week-end. Mon objectif est de regrouper chaque jour pour toutes les lignes d'une heure de début à une heure de fin.groupe linq par une heure de début à la fin sur DateTime Colonne
Donc, certains jours, mon heure de début mai 9h30 et fin de 15h00. Cette situation que je gère par ce qui suit:
DateTime sd = new DateTime(2000, 1, 1, 9, 30, 0);
DateTime ed = new DateTime(2000, 1, 1, 15, 0, 0);
var z = Foos.Where(a=> a.FooDate.TimeOfDay >= sd.TimeOfDay &&
a.FooDate.TimeOfDay < ed.TimeOfDay)
.GroupBy(a=>a.FooDate.Date);
Cela fonctionne très bien. Mon problème est parfois que j'ai un début de 21 heures et une heure de fin de 6 heures du matin. Dans ce cas je veux que le groupe de foos passe la nuit, et si le 21h est un vendredi et qu'il n'y a pas de rang avant le lundi suivant je veux que le groupe couvre le week-end. Je serais même heureux avec une suggestion d'une requête qui irait toujours tout le jour suivant.
J'espère que c'est clair et apprécier toutes les idées. J'ai essayé beaucoup d'autres façons de le faire avec des boucles et de créer une autre liste de dates distinctes et autres, mais je ne suis pas content.
Je suis confus quant à ce que vous essayez de déterminer. Essayez-vous d'obtenir la quantité de temps entre les entrées (Foos)? ou comptez-vous le nombre d'entrées entre deux fois? – Jeremy
J'essaie de grouper la liste des objets foo dans une plage de temps. Donc, le premier jour, il y a des données qui seraient regroupées entre l'heure de début de la journée et le jour suivant, il y a la fin des données. Puis, ce jour-là, recommencez à l'heure de départ et continuez. – RBear