我正在使用Entity Framework Core和IQueryable从表中执行非常正常的选择数据。我在搜索中使用分页,因此要根据页面大小和当前页面获取行x到y。
这是我的代码:
_dbContext.Orders.Where(o => o.UserId == userId)
.Skip((pageNo - 1) * pageSize).Take(pageSize).ToListAsync();
结果SQL:
SELECT [o].[UserId], [o].[OrderId], [o].[OrderDate], [o].[OrderType], [o].[FromNameAddressId], [o].[ToNameAddressId], [o].[Status]
FROM [Orders] AS [o]
WHERE [o].[UserId] = 12
ORDER BY (SELECT 1) OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY;
我面临的问题是我还希望将总记录数作为查询结果的一部分返回,并最终(当前)必须将其作为对db的单独调用。
这是我的代码:
_dbContext.Orders.Where(o => o.UserId == userId).CountAsync();
结果SQL:
SELECT COUNT(*) FROM [Orders] AS [o] WHERE [o].[UserId] = 12;
我希望提高效率,因此我们希望将总记录数作为第一个查询的一部分返回,或者使用一个db调用而不是两个来运行两个选择。以前有人有过这个吗?我对Entity Framework很新,所以这可能很容易实现。
提前感谢任何指针!