2

我该怎么做呢

SELECT  CEILING(COUNT(*) / 10) NumberOfPages
 FROM  MyTable

在 Linq 到 SQL 中?

4

3 回答 3

1

许多 .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);
}
于 2010-04-28T09:11:39.433 回答
0

您不使用 SQL CEILING,而是在 LINQ 查询中使用 .NET 上限(Math.Ceiling)。

于 2010-04-28T07:58:13.813 回答
0

我不认为这是可能的。一种可能的解决方案是获取总数,然后在 .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);
于 2010-04-28T07:59:17.800 回答