我该怎么做呢
SELECT CEILING(COUNT(*) / 10) NumberOfPages
FROM MyTable
在 Linq 到 SQL 中?
我该怎么做呢
SELECT CEILING(COUNT(*) / 10) NumberOfPages
FROM MyTable
在 Linq 到 SQL 中?
许多 .NET 方法都被转换为 SQL Server 函数,例如 Math 类和 String 类的大部分方法。但有一些警告。
另请查看SqlMethods 类,它公开了没有 .NET 等效项的其他 SQL Server 函数。
但是在您的情况下,您甚至不需要任何这些:
int numberOfPages;
using (var db = new MyDBDataContext())
{
numberOfPages = (int)Math.Ceiling(db.Books.Count() / 10.0);
}
您不使用 SQL CEILING,而是在 LINQ 查询中使用 .NET 上限(Math.Ceiling)。
我不认为这是可能的。一种可能的解决方案是获取总数,然后在 .NET 代码中计算出来。如下所示:
查询是 IQueryable 的地方
var itemsPerPage = 10;
var currentPage = 0;
var totalResults = query.Count();
var myPagedResults = query.Skip(currentPage).Take(itemsPerPage);
var totalPages = (int)Math.Ceiling((double)totalResults / (double)pageSize);