linq-Gruppe durch eine Startzeit zu Endzeit DateTime-Spalte
Ok das ist ein bisschen chaotisch Abfrage und ich bin nur mit begrenztem Erfolg mit ihm. Ich habe eine Liste von ein Foo Klasse, die eine datetime-Eigenschaft und andere Daten. Ich habe eine Klasse/Zeile für fast jede minute, einige fehlen und einige ganze Tage fehlen, wie ein Urlaub oder ein Wochenende. Mein Ziel ist die Gruppe jeden Tag für alle Zeilen aus einer Zeit start Zeit Ende Zeit.
So dass in einigen Tagen mein start Zeit 9:30 Uhr und Endzeit 3:00 Uhr. Diese situation kann ich das umgehen, indem die folgenden:
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);
Diese funktioniert einwandfrei. Mein problem ist, manchmal habe ich eine Startzeit von 9 Uhr und einer Endzeit von 6 Uhr morgens. In diesem Fall möchte ich die Gruppe der foos gehen über Nacht, und wenn die 9pm ist an einem Freitag und es gibt keine Zeilen bis zum nächsten Montag möchte ich das die Gruppe sich über das Wochenende. Ich würde auch gerne einen Vorschlag, der eine Abfrage damit würde immer gehen, um für den nächsten Tag.
Ich hoffe das ist klar und schätzen alle Ideen. Ich habe versucht, eine Menge andere Möglichkeiten, dies zu tun mit Schleifen und erstellen eine weitere Liste der unterschiedlichen Terminen und so, aber ich bin nicht glücklich mit ihm.
- Ich bin verwirrt, was Sie versuchen, zu bestimmen. Sind Sie versuchen, um die Zeit zwischen den Einträgen (Foos)? oder sind Sie zählen die Anzahl der Einträge zwischen den zwei Zeiten?
- Im Versuch, die Gruppe der Liste der foo-Objekte in eine Zeit reichen. So, am ersten Tag, es gibt Daten, es würde die Gruppe aus der start-Zeit des Tages, um am nächsten Tag gibt es Daten endtime. Dann an diesem Tag wieder starten zu Beginn Zeit und weiter.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Physik, wenn vor einem relativen problem, Sie erhalten zu wählen, wo null ist. So tun wir.
Ergebnisse:
Wird dies funktionieren, aber es kann nicht sein, schöner als das, was Sie bereits tut
und groupFoo sieht wie folgt aus
die Probe, die ich verwendet