优化一个查询中的LinQ最大日期

优化一个查询中的LinQ最大日期,linq,entity-framework,linq-to-entities,Linq,Entity Framework,Linq To Entities,我有以下代码: Decimal initialBalance; DateTime dailyDate = ctx.DailyBalances.Max(c => c.DailyDate); if (dailyDate != null) initialBalance = ctx.DailyBalances.Where(c => c.DailyDate == dailyDate).Select(c => c.FinalBalance).

我有以下代码:

Decimal initialBalance;
DateTime dailyDate = ctx.DailyBalances.Max(c => c.DailyDate);
          if (dailyDate != null)
              initialBalance = ctx.DailyBalances.Where(c => c.DailyDate == dailyDate).Select(c => c.FinalBalance).FirstOrDefault();
            else
                initialBalance = 0;

            return initialBalance;

尽管如此,我一直在试图找到优化它的方法,用一个查询代替一个查询。。。任何建议???

使用
OrderByDescending
并获取第一条记录:

initialBalance = ctx.DailyBalances
   .OrderByDescending(c => c.DailyDate)
   .Select(c => c.FinalBalance)
   .FirstOrDefault();
这种类型的查询在SQL Server中进行了优化,所以它不需要对整个表进行O(n log(n))排序。如果在
DailyDate
上有一个索引,它将找到索引中的最后一行,如果没有索引,它将使用一种称为线性时间运行的优化算法


但是,此查询将在LINQ to Objects中为O(n log(n))。

此代码编写时没有意义:dailyDate永远不会为null。。。(DateTime不能为空)对不起,你说得对,但我想知道的是,取最大值然后获得平衡的整个问题,你的意思很确定。OrderByDescending(c=>c.DailyDate)。你真是太棒了。