2015-11-25 11 views
6

Ich habe ein Problem mit einer PaginatedList in einem Web-API-Projekt.So verwenden Sie die Paginate-Methode

Im Repository gibt es eine Methode, wie:

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

Aber, wenn ich versuche, es zu benutzen, wie folgt aus:

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

ich diesen Fehler:

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

Was mache ich falsch?

+0

Sind Ihre Stichproben richtig? Ihre 'Paginate'-Methode hat 4 Parameter (Params ignoriert), aber Sie sind nur 3 in der Probe Anruf –

+0

Schleifen Ja, wir haben Recht. Es war nur ein Fehler. Ich habe die Frage bereits aktualisiert – Marusyk

Antwort

6

Ihre Methodensignatur hat TKey, die ich nehme an, ein Schlüssel für die Sortierung ist, aber in Ihrem Anruf Sie das ganze Objekt Region angeben, und Sie dann int im keySelector angeben, so kann es nicht kompilieren, da es versucht, Verwenden Sie int Typ als Region Typ für TKey.

Ich nehme Ihre Probe sein soll:

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

Allgemein Typ T i für die ganze Klasse angegeben ist wohl, so dass es hier in Ordnung sein sollte es nicht in der Aufforderung angeben, als Repository-Instanz bereits generisch Spezifisch.

+0

Vielen Dank. Es funktioniert. Danke noch einmal. – Marusyk

+0

Sie sind herzlich willkommen :) –