Как получить ToTraceString для IQueryable.Count

, я использую ((ObjectQuery) IQueryable) .ToTraceString () для получения и настройки кода SQL, который будет выполняться пользователя LINQ.

Моя проблема в том, что в отличие от большинства методов IQueryable, IQueryable.Count, определенный следующим образом:

    public static int Count(this IQueryable source) {
        return (int)source.Provider.Execute(
            Expression.Call(
                typeof(Queryable), "Count",
                new Type[] { source.ElementType }, source.Expression));
    }

выполняет запрос без компиляции и возврата IQueryable. Я хотел сделать трюк примерно таким:

public static IQueryable CountCompile(this IQueryable source) {
    return source.Provider.CreateQuery(
        Expression.Call(
            typeof(Queryable), "Count",
            new Type[] { source.ElementType }, source.Expression));
}

Но то CreateQuery дает мне следующее исключение:

Выражения запросов LINQ to Entities могут быть созданы только из экземпляров, реализующих интерфейс IQueryable.

11
задан alpav 28 November 2011 в 21:41
поделиться