Laden...

DateTime elegant vergleichen

Erstellt von Stipo vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.941 Views
Stipo Themenstarter:in
699 Beiträge seit 2007
vor 12 Jahren
DateTime elegant vergleichen

Hallo zusammen,

nun habe ich doch mal wieder eine kleine Frage.

Ich habe eine List<DataClass> mit ca. 100.000 Einträgen. In der Class ist jeweils ein DateTime enthalten.

Nun möchte ich aus der Liste die Klassen rausfiltern, in denen das DateTime in einem bestimmten Zeitraum sind (zB: alles von 11:00 Uhr bis 12:00 Uhr).

Gibt es da eine elegante Lösung dafür? Oder muss ich das über DateTime.Compare lösen?

Grüße
Stephan

C
252 Beiträge seit 2007
vor 12 Jahren

Das sollte ganz einfach mittels FindAll() zu erledigen sein.
Hier mal ein kleines Sample:


      var l = new List<DateTime>
                           {
                             DateTime.Now,
                             DateTime.Now.AddHours(1),
                             DateTime.Now.AddHours(2),
                             DateTime.Now.AddHours(3),
                             DateTime.Now.AddHours(-1),
                             DateTime.Now.AddHours(-2),
                             DateTime.Now.AddHours(-3)
                           };

      DateTime start = DateTime.Now.AddHours(-1);
      DateTime end = DateTime.Now.AddHours(1);

      var result = l.FindAll(d => start <= d && end >= d);

Du musst eben dann entsprechend auf das DateTime Property deiner DataClass zugreifen.

16.830 Beiträge seit 2008
vor 12 Jahren

Alternativ auch

var l = new List<DateTime>{.....};  
var results = l.Where(date => date.Hour == 11);

sofern sich Dein "bis" nicht auf "einschließlich 12:00" bezieht.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Stipo,

wenn du öfter alle Einträge in bestimmten Zeiträumen heraussuchen musst, bietet es sich an, die Liste nach den Zeiträumen (also primär nach nach Anfangszeit und sekundär nach Endzeit) zu sortieren. Anschließend kannst du binäre Suche verwenden.

herbivore