Я использую LINQ для получения списка объектов, находящихся в определенном диапазоне дат. Например, у меня есть текущий день в формате DateTime: 21.05.2016 0:00:00, и мне нужно получать новости, которые были опубликованы после 1 дня назад (5 дней назад, 3 месяца назад, 1 год назад, 5 лет назад) и до этого момента. Я сделал это на следующие пути:Как сделать универсальный запрос для диапазона дат?
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 моя текущая дата. Я считаю FromDate следующими:
1 день:
fromDate = toDate;
5 дней:
fromDate = toDate.AddDays(-5);
3 месяца:
fromDate = toDate.AddMonths(-3);
т.д.
Но я получаю только 2 новости за 3 месяца. Это 21.04.2016 0:00:00 и 21.05.2016 0:00:00. Поэтому вы знаете, что они отличаются только количеством месяцев, потому что моя текущая дата - 21.05.2016. Что я делаю неправильно? Я должен получить гораздо больше новостей, я это знаю.
Почему вы каждый компонент-опрос по отдельности, а не просто 's.Date> = fromDate' и т.д.? –