public static IQueryable <TResult> GroupBy <TSource, TKey, TElement, TResult>(this IQueryable <TSource> source, Expression <Func <TSource, TKey> > keySelector, Expression <Func <TSource, TElement> > elementSelector, Expression <Func <TKey, IEnumerable <TElement>, TResult> > resultSelector, IEqualityComparer <TKey> comparer) { Check.GroupBySelectors(source, keySelector, elementSelector, resultSelector); return(source.Provider.CreateQuery <TResult>(StaticCall(MakeGeneric(MethodBase.GetCurrentMethod(), typeof(TSource), typeof(TKey), typeof(TElement), typeof(TResult)), source.Expression, Expression.Quote(keySelector), Expression.Quote(elementSelector), Expression.Quote(resultSelector), Expression.Constant(comparer)))); }