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.
InformationsquelleAutor RBear | 2009-05-14
Schreibe einen Kommentar