如何使用Paginate方法

时间:2015-11-25 20:21:58

标签: c# asp.net-mvc asp.net-web-api

我在Web API项目中遇到了PaginatedList的问题。

在存储库中有一个方法,如:

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

我收到此错误:

  

无法将类型'int'隐式转换为   'Domain.Entities.Dictionaries.Region'

我做错了什么?

1 个答案:

答案 0 :(得分:6)

您的方法签名有TKey,我认为这是排序的关键,但在您的调用中,您指定整个对象Region,然后在{{int中指定keySelector 1}},因此它无法编译它,因为它尝试将int类型用作Region的{​​{1}}类型。

我想你的样本应该是:

TKey

通用类型repository.Paginate<int>(pageNo, pageSize, x => x.ID, null); 我想是为整个类指定的,所以在这里应该没有在调用中指定它,因为存储库实例已经是通用特定的。