我想从数据库中获取记录,同时在同一次调用中获取记录数。我的方法是异步的,所以我不确定这是否是正确的方法:
public async Task<IEnumerable<ProductItemViewModel>> GetAsync(int pageIndex, int pageSize)
{
var products = this.Repository.GetAll<Product>().OrderBy(p => p.Price).AsQueryable();
var count = await products.CountAsync();
if (count == 0)
return new List<ProductItemViewModel>();
products = products.ToPaginatedList(pageIndex, pageSize);
var result = await products.ToListAsync();
var viewModels = new List<ProductItemViewModel>();
Mapper.Map(result, viewModels);
return viewModels.AsEnumerable();
}
我认为等待CountAsync()并不是很好,但我不确定如何实现。
谢谢。
编辑:
很抱歉我没有在任何地方返回计数,因为看起来只有那个 == 0 检查,但最终我将返回具有记录的计数,因为我需要它用于我的angular分页指令。还没有想出如何返回(新类与元组),所以我错过了它,专注于entity framework Count()和entity fetch in single DB call。
ToPaginatedList
是如何工作的?为什么不直接检查result.Count == 0
? - Yacoub MassadSkip
和Take
? - Yacoub Massad