我已经在模型中将字段声明为可为null的日期时间,如下所示

public DateTime? CallNextDate {get;set;}

在我后面的aspx代码中,我正在使用以下linq:
q = q.AsQueryable()
    .Where(c => c.CallNextDate.Date < DateTime.Now.Date )
    .ToList();

c.CallNextDate.Date不可用。请建议如何解决

最佳答案

好吧,如果您已经知道它为非空值,则可以使用 Value 来获取基础的非空值:

q = q.AsQueryable()
     .Where(c => c.CallNextDate.Value.Date < DateTime.Now.Date)
     .ToList();

或者,如果您也想对此进行过滤:
q = q.AsQueryable()
     .Where(c => c.CallNextDate.Value != null &&
                 c.CallNextDate.Value.Date < DateTime.Now.Date)
     .ToList();

我强烈建议您一次获取今天的日期,并将其重新用于整个查询:
var today = DateTime.Today;
q = q.AsQueryable()
     .Where(c => c.CallNextDate.Value != null &&
                 c.CallNextDate.Value.Date < today)
     .ToList();

那会给你更多的一致性。顺便说一句,您应该真正考虑是否要使用系统本地日期。

(顺便说一句,您是否确实需要使用AsQueryable?这种情况比较少见。)

10-07 16:48