我有一个控制器,其中包含以下内容:
List<Game> gamesRat = new List<Game>();
if (selectedRating.Count() != 0)//User select any checkboxes
{
FilterGamesByRating(gamesRat, selectedRating, "Shooter");//Filter by user inputs
my = true;//Boolean
}
所以我的问题是: 当我尝试返回视图时:
return View(await PaginatedList<Game>.CreateAsync(gamesRat.AsQueryable(), page ?? 1, pSize));
我收到以下错误:
源IQueryable的提供程序不实现IAsyncQueryProvider。只有实现IEntityQueryProvider的提供程序才能用于实体框架异步操作
但是在其他方法中,我把那个查询:
IQueryable<Game> games = _context.Games.Where(x => x.Category == "Shooter");
return View(await PaginatedList<Game>.CreateAsync(games, page ?? 1, pSize));
完美无缺。我该如何解决这个错误?感谢。
当然,我的PaginatedList方法:
public class PaginatedList<T> : List<T>
{
public int PageIndex { get; private set; }
public int TotalPages { get; private set; }
public PaginatedList(List<T> items, int count, int pageIndex, int pageSize)
{
PageIndex = pageIndex;
TotalPages = (int)Math.Ceiling(count / (double)pageSize);
this.AddRange(items);
}
public bool HasPreviousPage
{
get
{
return (PageIndex > 1);
}
}
public bool HasNextPage
{
get
{
return (PageIndex < TotalPages);
}
}
public static async Task<PaginatedList<T>> CreateAsync(IQueryable<T> source, int pageIndex, int pageSize)
{
var count = await source.CountAsync();
var items = await source.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync();
return new PaginatedList<T>(items, count, pageIndex, pageSize);
}
}