, я использую ((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.