Comment puis-je faireQuel est le Linq to SQL équivalent à CEILING?
SELECT CEILING(COUNT(*)/10) NumberOfPages
FROM MyTable
dans LINQ to SQL?
Comment puis-je faireQuel est le Linq to SQL équivalent à CEILING?
SELECT CEILING(COUNT(*)/10) NumberOfPages
FROM MyTable
dans LINQ to SQL?
De nombreuses méthodes .NET sont converties en fonctions SQL Server, comme la plupart des méthodes de la classe Math et la classe String. Mais il y a some caveats.
Jetez également un coup d'oeil au SqlMethods class, qui expose la fonction SQL Server supplémentaire qui n'a pas d'équivalent .NET.
Mais vous ne même pas besoin de tout cela dans votre cas:
int numberOfPages;
using (var db = new MyDBDataContext())
{
numberOfPages = (int)Math.Ceiling(db.Books.Count()/10.0);
}
Vous n'utilisez pas SQL CEILING, vous utilisez .NET plafond (Math.Ceiling) dans votre requête LINQ.
Je ne pense pas que ce soit possible. Une solution possible serait d'obtenir le nombre total et ensuite le comprendre en code .NET. comme ci-dessous:
où la requête est 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);