2015-11-25 4 views
6

У меня проблема с PaginatedList в проекте веб-API.Как использовать метод Paginate

В хранилище есть метод, как:

public virtual PaginatedList<T> Paginate<TKey>(int pageIndex, int pageSize, 
    Expression<Func<T, TKey>> keySelector, 
    Expression<Func<T, bool>> predicate, 
    params Expression<Func<T, object>>[] includeProperties) 
{ 
    IQueryable<T> query = AllIncluding(includeProperties).OrderBy(keySelector); 

    query = (predicate == null) 
     ? query 
     : query.Where(predicate); 

    return query.ToPaginatedList(pageIndex, pageSize); 
} 

Но, когда я пытаюсь использовать его, как это:

var a = repository.Paginate<Region>(pageNo, pageSize, x => x.ID, null); 

Я получаю эту ошибку:

Cannot implicitly convert type 'int' to 'Domain.Entities.Dictionaries.Region'

Что я делаю не так?

+0

Ваш выбор правильный? ваш метод 'Paginate' имеет 4 параметра (игнорируя параметры), но вы отшлифовываете только 3 в ответе выборки –

+0

Да, U're right. Это была просто ошибка. Я уже обновил вопрос – Marusyk

ответ

6

Ваш метод подписи имеет TKey, что я полагаю, является ключевым для сортировки, но в вызове вы указываете весь объект Region, а затем указать int в keySelector, поэтому он не может скомпилировать его, как он пытается использование int type как Region type для TKey.

Я полагаю, ваш образец должен быть:

repository.Paginate<int>(pageNo, pageSize, x => x.ID, null); 

Generic тип T я полагаю, определяется для всего класса, так что это должно быть хорошо здесь, чтобы не указывать его в вызове, так как экземпляр хранилища уже родовое конкретный.

+0

Большое спасибо. Это работает. Еще раз спасибо. – Marusyk

+0

Добро пожаловать :) –

Смежные вопросы