首页 > 解决方案 > 表为空时获取最大日期并返回默认日期

问题描述

"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场。

标签: c#entity-frameworklinqlinq-to-entities

解决方案


使用DefaultIfEmpty之前的方法.Max(因为它是实体的 linq,您将无法创建新的事务对象,然后首先仅投影日期):

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

推荐阅读