Qual è il LINQ to SQL equivalente a soffitto?
-
02-10-2019 - |
Domanda
Come faccio a fare questo
SELECT CEILING(COUNT(*) / 10) NumberOfPages
FROM MyTable
in LINQ to SQL?
Soluzione
Molti metodi di .NET sono convertiti a funzioni di SQL Server, come ad esempio la maggior parte dei metodi della classe Math e la classe String. Ma ci sono alcuni avvertimenti .
hanno anche uno sguardo al SqlMethods classe , che espone la funzione aggiuntiva di SQL Server che non dispone di un .NET equivalente.
Ma voi non hanno nemmeno bisogno di nulla di tutto ciò nel vostro caso:
int numberOfPages;
using (var db = new MyDBDataContext())
{
numberOfPages = (int)Math.Ceiling(db.Books.Count() / 10.0);
}
Altri suggerimenti
non usate SOFFITTO SQL, si utilizza soffitto .NET (Math.Ceiling) nella query LINQ.
Non credo che questo sia possibile. Una possibile soluzione sarebbe quella di ottenere il numero totale e quindi capire in NET. Come di seguito:
dove query è 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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow