2015-11-25 20 views
6

Web API projesinde bir PaginatedList ile ilgili bir sorunum var. depo olarakNasıl kullanılır Paginate yöntemi

var bir yöntem gibi:

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

Ama, böyle, onu kullanmayı deneyin:

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

:

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

bu hatayı alıyorum Neyi yanlış yapıyorum?

+0

Numuneniz doğru mu? 'Paginate' yönteminiz 4 parametreye sahiptir (parazitleri göz ardı eder), ancak örnek çağrı –

+0

’da sadece 3’ü zımparalıyorsunuz, evet doğru. Bu sadece bir hataydı. Zaten – Marusyk

cevap

6

Yöntemin imzası vardır i sıralamak için bir anahtardır, ancak çağrınızda Eğer bütün nesneyi Region belirtiyorsanız ve sonra keySelector yılında int belirtmek, bu yüzden çalışır olarak bunu derleme olamaz herhalde TKeyTKey için Region türünde int türünü kullanın.

senin örnek olmalıdır varsayalım:

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

o çağrısında bunu belirtmez burada iyi olmalı, böylece depo örneği zaten genel olarak ben, tüm sınıf için belirtilen varsayalım Jenerik tip T özel.

+0

soruyu güncelledim Çok teşekkür ederim. Bu çalışıyor. Tekrar teşekkürler. – Marusyk

+0

Rica ederim :) –

İlgili konular