Ich verwende LINQ, um eine Liste von Objekten zu erhalten, die sich in einem bestimmten Datumsbereich befinden. Zum Beispiel habe ich aktuellen Tag im DateTime-Format: 21.05.2016 0:00:00 und ich brauche Nachrichten, die nach 1 Tag (vor 5 Tagen, vor 3 Monaten, vor 1 Jahr, 5 Jahren) und veröffentlicht wurden bis zu diesem Moment. Ich habe es den folowing Weg:Wie kann ich eine universelle Abfrage für den Datumsbereich durchführen?
List<MyObject> data =
DataDownloader.myList.Where(s => s.Date.Year >= fromDate.Year
&& s.Date.Month >= fromDate.Month
&& s.Date.Day >= fromDate.Day
&& s.Date.Year <= toDate.Year
&& s.Date.Month <= toDate.Month
&& s.Date.Day <= toDate.Day).ToList();
toDate mein aktuelles Datum. Ich finde die VonDatum durch die folgenden:
1 Tag:
fromDate = toDate;
5 Tagen
fromDate = toDate.AddDays(-5);
3 Monate:
fromDate = toDate.AddMonths(-3);
usw.
Aber ich bekomme nur 2 Nachrichten für 3 Monate. Es ist 21.04.2016 0:00:00 und 21.05.2016 0:00:00. Sie wissen also, dass sie sich nur in der Anzahl der Monate unterscheiden, da mein aktuelles Datum der 21.05.2016 ist. Was mache ich falsch? Ich sollte viel mehr Nachrichten bekommen, ich weiß es.
Warum abfragen Sie jede Komponente einzeln und nicht nur 's.Date> = fromDate' etc? –