MoreLinq maxBy vs LINQ max + where

本文关键字:where max LINQ maxBy vs MoreLinq | 更新日期: 2023-09-27 18:36:14

我正在使用具有MoreLinq扩展的EF5,在生产(非常大的数据库)中测试我的程序时,我发现以下行:

var x = db.TheBigTable.MaxBy(x => x.RecordTime);

需要很长时间(RecordTime是非索引datetime

这是因为MaxBy总是在客户端运行(并且首先从数据库中获取所有记录)?

MoreLinq maxBy vs LINQ max + where

下面是MaxBy扩展方法的签名:

public static TSource MaxBy<TSource, TKey>(this IEnumerable<TSource> source,
    Func<TSource, TKey> selector)
{
    return source.MaxBy(selector, Comparer<TKey>.Default);
}

它返回IEnumerable<T>的最大元素(基于给定的投影),而不是IQueryable<T>。所以查询db.TheBigTable的结果确实先全部加载到内存中,然后迭代找到最大值。