2015-11-25 20 views
6

Mam problem z listą pokrewną w projekcie Web API.Sposób korzystania z metody Paginate

w repozytorium istnieje metoda jak:

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); 
} 

Ale gdy próbuję go użyć w następujący sposób:

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

otrzymuję ten błąd:

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

Co ja robię źle?

+0

Czy Twoja próbka jest prawidłowa? twoja metoda "Paginate" ma 4 parametry (ignorując parametry), ale szlifujesz tylko 3 w wywołaniu próbki –

+0

Tak, masz rację. To był po prostu błąd. Już zaktualizowałem pytanie: – Marusyk

Odpowiedz

6

Twój podpis metoda ma TKey że przypuszczam jest klucz do sortowania, ale w wywołaniu jesteś określające cały obiekt Region, a następnie podać int w keySelector, więc nie można go skompilować, ponieważ próbuje użyj typu int jako typu Region dla TKey.

Przypuszczam próbka powinna być:

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

Generic typu T przypuszczam jest określony dla całej klasy, więc powinno być dobrze, żeby nie podać go w zaproszeniu, jak repozytorium instancja jest już generic konkretny.

+0

Dziękuję bardzo. To działa. Dzięki jeszcze raz. – Marusyk

+0

Serdecznie zapraszamy :) –

Powiązane problemy