我正在使用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);
等
但我3个月内只收到2条消息。这是21.04.2016 0:00:00和21.05.2016 0:00:00。所以你知道他们只有几个月的不同,因为我目前的日期是21.05.2016。我做错了什么?我应该得到更多我知道的新闻。
答案 0 :(得分:2)
您正在比较某个日期的每个元素,而这些元素并不能为您提供正确的答案。
你在过去3个月里说过&#39; (2016年2月21日至2016年5月21日)该日必须在21至21之间,2至5之间的月份以及2016年至2016年之间的一年
您有效地搜索2016年2月21日,2016年3月21日,2016年4月21日或2016年5月21日,而不是所有日期。
只需比较日期:
list.Where(x => x.Date >= fromDate && x.Date <= toDate).ToList();