我在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'
我做错了什么?
答案 0 :(得分:6)
您的方法签名有TKey
,我认为这是排序的关键,但在您的调用中,您指定整个对象Region
,然后在{{int
中指定keySelector
1}},因此它无法编译它,因为它尝试将int
类型用作Region
的{{1}}类型。
我想你的样本应该是:
TKey
通用类型repository.Paginate<int>(pageNo, pageSize, x => x.ID, null);
我想是为整个类指定的,所以在这里应该没有在调用中指定它,因为存储库实例已经是通用特定的。