у меня есть метод расширения, который мне действительно помог дать человек ... он выполняет заказ на IQueryable ... но я хотел, чтобы он сделал обычный IQueryable (не универсальный)
Вот код, граф, пропустить и я думаю, что Take отсутствуют.
public static IQueryable GetPage(this IQueryable query,
int page, int pageSize, out int count)
{
int skip = (int)((page - 1) * pageSize);
count = query.Count(); //COUNT DOESN'T EXIST
return query.Skip(skip).Take((int)pageSize); // NEITHER SKIP
}
Вот и все работает без ошибок.
public static IQueryable<T> GetPage<T>(this IQueryable<T> query,
int page, int pageSize, out int count)
{
int skip = (int)((page - 1) * pageSize);
count = query.Count();
return query.Skip(skip).Take((int)pageSize);
}
Есть идеи, как мне это обойти? Я не хочу менять типы возвращаемых данных, так как он отлично работает, и у меня есть другой метод расширения, называемый ToDataTable, и он также работает с неуниверсальным IQueryable ..
Есть ли обходной путь?
Заранее спасибо
EDIT
Я называю это так на существующем IQueryable
IQueryable<Client> gen = null;
IQueryable nongen = null;
var test = gen.GetPage(); //COMPILES!
var test 1 = non.GetPage(); // Doesn't compile because GETPAGE
// for non generic is broken as it has
// invalid methods like COUNT and SKIP etc.
Я попытался удалить неуниверсальную версию GetPage, но затем мой не универсальный Iqueryable не получает расширение из-за того, что оно не Iqueryable, а только IQueryable