IQueryable (не общий): отсутствует число и Пропускать ? он работает с IQueryable

У меня есть метод расширения, который мне очень помог мне дать ... он выполняет orderby на 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 ..

Есть ли обходной путь?

Заранее спасибо

] РЕДАКТИРОВАТЬ

Я называю это так на существующем 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 не сделал этого. t выбрать расширение из-за того, что это не Iqueryable, а только IQueryable

7
задан Martin 26 November 2010 в 13:23
поделиться