LINQ to SQL, bunu ROW_NUMBER pencereleme işlevi kullanarak yapar:
SELECT a,b,c FROM
(SELECT a,b,c, ROW_NUMBER() OVER (ORDER BY ...) as row_number
FROM Table) t0
WHERE to.row_number BETWEEN 1000 and 1100;
Bu çalışır, ancak SİPARİŞ BY dan row_number üretmek için ihtiyaç olabilir Sorgunuzda neden sunucu tarafında ve performans sorunlarına yol üzerinde sıralanmış. Bir dizin ORDER BY gereksinimini karşılayabilse bile, sorgunun sonuçları döndürmeye başlamadan önce yine de 1000 satır sayması gerekir. Çoğu zaman geliştiriciler bunu unuturlar ve 5 milyon satırlık bir tablo üzerinde sayfalandırma kontrolü yaparlar ve ilk sayfanın neden öncekinden çok daha hızlı geri döndüğünü merak ederler ...
Yine de, ROW_NUMBER () kullanmak, sıralamadan kaçınmanız koşuluyla, muhtemelen kullanım kolaylığı ile iyi performans arasındaki en iyi dengedir (ORDER BY koşulu bir indeksle karşılanabilir).