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
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.
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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