2015-11-25 16 views
6

Tôi gặp sự cố với một PaginatedList trong dự án API Web.Cách sử dụng phương pháp Paginate

Trong kho có một phương pháp như:

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

Tuy nhiên, khi tôi cố gắng sử dụng nó, như thế này:

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

tôi nhận được lỗi này:

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

Tôi đang làm gì sai?

+0

Mẫu của bạn có chính xác không? phương thức 'Paginate' của bạn có 4 tham số (bỏ qua params), nhưng bạn đang chà nhám chỉ 3 trong mẫu gọi –

+0

Vâng, đúng vậy. Đó chỉ là một sai lầm. Tôi đã cập nhật câu hỏi – Marusyk

Trả lời

6

phương pháp chữ ký của bạn có TKey mà tôi giả sử là một chìa khóa để phân loại, nhưng trong cuộc gọi của bạn, bạn được chỉ định toàn bộ đối tượng Region, và sau đó bạn chỉ định int trong keySelector, vì vậy nó không thể biên dịch nó như nó cố gắng sử dụng int loại là Region loại cho TKey.

Tôi cho rằng mẫu của bạn nên là:

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

Generic loại T tôi giả sử được quy định cho cả lớp, vì vậy nó nên được tốt ở đây không xác định nó trong các cuộc gọi, như ví dụ kho là đã generic riêng.

+0

Cảm ơn bạn rất nhiều. Nó hoạt động. Cảm ơn một lần nữa. – Marusyk

+0

Bạn được chào đón :) –

Các vấn đề liên quan