MoreLinq maxBy vs LINQ max + where

c# entity-framework linq-to-sql morelinq

Question

I am using EF5 with the MoreLinq extenstion, while testing my program in production (very big database), I found out that the line:

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

Takes very long time (RecordTime is a non-indexed datetime)

Is that because MaxBy always runs on the client side (and firstly gets ALL records from the database)?

1
5
10/21/2013 12:32:27 AM

Accepted Answer

Here is the signature of the MaxBy extension method:

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

It returns the maximal element (based on the given projection) of an IEnumerable<T>, not an IQueryable<T>. So the results of the query db.TheBigTable are indeed all loaded into memory first, and then they are iterated to find the maximum.

8
10/21/2013 12:38:00 AM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow