表为空时获取最大日期并返回默认日期

时间:2018-10-10 16:15:40

标签: c# entity-framework linq linq-to-entities

如果表没有行,如何返回日期"1900/12/12 00:00:00"?我正在尝试获取最大交易日期,并且如果表中有行,它会很好地工作,否则由于ToString()中的日期格式,我会收到一条错误消息。

string d = context.AllTransactions.Where(t => t.ID == OID)
                  .Max(t => t.TransactionDate).ToString("dd/MM/yyyy HH:mm:ss");

TransactionDateNOT NULL datetime字段。

1 个答案:

答案 0 :(得分:0)

DefaultIfEmpty之前使用.Max方法(由于它是对实体的限制,因此您将无法创建新的交易对象,然后仅投影日期):

var result = context.AllTransactions.Where(t => t.ID == OID)
                    .Select(t => t.TransactionDate)
                    .DefaultIfEmpty(new DateTime(1900,12,12)).Max();