Что такое Linq to SQL эквивалентно CEILING? - PullRequest
2 голосов
/ 28 апреля 2010

Как мне сделать это

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

в Linq to SQL?

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Многие методы .NET переводятся в функции SQL Server, такие как большинство методов класса Math и класса String. Но есть некоторые предостережения .

Также взгляните на класс SqlMethods , который предоставляет дополнительную функцию SQL Server, не имеющую эквивалент .NET.

Но вам даже не нужно ничего этого в вашем случае:

int numberOfPages;

using (var db = new MyDBDataContext())
{
   numberOfPages = (int)Math.Ceiling(db.Books.Count() / 10.0);
}
0 голосов
/ 28 апреля 2010

Я не думаю, что это возможно. Возможным решением было бы получить общее количество и затем выяснить это в коде .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);
0 голосов
/ 28 апреля 2010

Вы не используете SQL CEILING, вы используете потолок .NET (Math.Ceiling) в своем запросе LINQ.

...