我有一个如下所示的对象列表,其中date可以为null,
List<SomeObjects> myList:
myList[0] = id:1, Date:3/3/2016
myList[1] = id:2, Date:NULL
myList[2] = id:3, Date:3/3/2016
myList[3] = id:4, Date:NULL
对于一个条件,我必须按日期排序这个列表,如下所示:
var comparingDays = DateTime.Today;
var resultsFrom = "past 7 days";
comparingDays.AddDays(-7);
myList.Where(t =>t.Date.HasValue ? Convert.ToDateTime(t.Date) >= comparingDays : ).ToList();
如果日期为空,我不需要这些结果,但我正在努力如何在这里的HasValue的错误条件下进行。
如果"Date"是一个DateTime?,你可以这样修改你的查询:
myList
.Where(t =>t.Date.HasValue && t.Date.Value >= comparingDays).ToList()
所以你的空日期将被过滤,然后你可以安全地比较日期值
Where
(过滤器)和OrderBy
(排序)的组合应该工作:
List<SomeObjects> results = myList.Where(t => t.Date.HasValue && t.Date >= comparingDays)
.OrderBy(t => t.Date).ToList();
当t.Date是一个DateTime (Convert会对此产生疑问)时,您可以简单地使用
// myList
// .Where(t =>t.Date.HasValue ? Convert.ToDateTime(t.Date) >= comparingDays :)
// .ToList();
myList.Where(t => t.Date >= comparingDays).ToList()
因为null
不大于(或小于)任何Date值