什么是Linq to SQL相当于CEILING?

时间:2010-04-28 07:48:09

标签: sql-server-2005 linq-to-sql keyword equivalent ceiling

我该怎么做

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

在Linq to SQL中?

3 个答案:

答案 0 :(得分:1)

许多.NET方法都被转换为SQL Server函数,例如Math类和String类的大多数方法。但有some caveats

另请查看SqlMethods class,它公开了没有.NET等效的其他SQL Server函数。

但在你的情况下你根本不需要任何这些:

int numberOfPages;

using (var db = new MyDBDataContext())
{
   numberOfPages = (int)Math.Ceiling(db.Books.Count() / 10.0);
}

答案 1 :(得分:0)

您不使用SQL CEILING,在LINQ查询中使用.NET ceiling(Math.Ceiling)。

答案 2 :(得分: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);