如何在下面的函数中获取与谓词匹配的记录数?需要生成分页。

public async virtual Task<IEnumerable<T>> GetAll(Expression<Func<T, bool>> predicate, int pageNo, int pageSize)
{
    return (await dbContext.Set<T>().Where(predicate).Skip(pageSize * (pageNo - 1)).Take(pageSize).ToListAsync());
}

最佳答案

要计算项目数,需要在使用Count()方法进行分页之前进行。
这是Microsoft文档中的示例:

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


有关更多详细信息,请检查下面的链接:
https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/sort-filter-page?view=aspnetcore-2.0

关于c# - 如何使用Entity Framework获取记录计数匹配谓词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50448167/

10-13 21:27