Ok das ist irgendwie eine chaotische Abfrage und ich habe nur begrenzten Erfolg damit. Ich habe eine Liste einer Foo-Klasse, die eine Datetime-Eigenschaft und andere Daten hat. Ich habe eine Klasse/Zeile für fast jede Minute, mit einigen fehlenden und einige ganze Tage fehlen wie ein Urlaub oder ein Wochenende. Mein Ziel ist es, jeden Tag für alle Zeilen von einer Startzeit bis zu einer Endzeit zu gruppieren.Linq-Gruppe von einer Startzeit bis Endzeit auf DateTime Spalte
Also an einigen Tagen kann meine Startzeit 9:30 Uhr und Endzeit 3:00 Uhr sein. Diese Situation handle ich folgendermaßen:
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);
Das funktioniert gut. Mein Problem ist manchmal eine Startzeit von 9 Uhr und eine Endzeit von 6 Uhr. In diesem Fall möchte ich, dass die Gruppe von Foos über Nacht geht, und wenn die 21 Uhr an einem Freitag ist und es bis zum nächsten Montag keine Zeilen gibt, möchte ich, dass die Gruppe das Wochenende überspannt. Ich wäre sogar glücklich mit einem Vorschlag einer Anfrage, die einfach immer zum nächsten Tag gehen würde.
Ich hoffe, dass das klar ist und alle Ideen zu schätzen wissen. Ich habe viele andere Möglichkeiten ausprobiert, dies mit Loops zu tun und eine andere Liste mit verschiedenen Daten und dergleichen zu erstellen, bin aber nicht damit zufrieden.
Ich bin verwirrt, was Sie zu bestimmen versuchen. Versuchen Sie, die Zeit zwischen den Einträgen (Foos) zu erhalten? oder zählst du die Anzahl der Einträge zwischen zwei Zeiten? – Jeremy
Ich versuche, die Liste der foo Objekte in einen Zeitbereich zu gruppieren. Also, am ersten Tag gibt es Daten, die von der Startzeit dieses Tages bis zum nächsten Tag gruppiert werden würden. Dann an diesem Tag wieder zur Startzeit starten und fortfahren. – RBear