我有一个对象列表,如下所示,其中日期可以为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();
如果Date为null,我不需要那些结果,但我正在努力如何在HasValue的错误条件下继续进行。
答案 0 :(得分:3)
如果“Date”是DateTime ?,您可以像这样更改查询:
myList
.Where(t =>t.Date.HasValue && t.Date.Value >= comparingDays).ToList()
因此,您的空日期将被过滤,然后您可以安全地比较日期值。
答案 1 :(得分:2)
Where
(过滤器)和OrderBy
(排序)的组合应该有效:
List<SomeObjects> results = myList.Where(t => t.Date.HasValue && t.Date >= comparingDays)
.OrderBy(t => t.Date).ToList();
答案 2 :(得分:1)
当t.Date是DateTime时(Convert会对此产生怀疑),你可以简单地使用
// myList
// .Where(t =>t.Date.HasValue ? Convert.ToDateTime(t.Date) >= comparingDays :)
// .ToList();
myList.Where(t => t.Date >= comparingDays).ToList()
因为null
不比任何日期值更大(或更小)。