Dalla mia esperienza, il paging è sempre più veloce se lasciato al database. Dopo tutto, un database è costruito per interrogare e manipolare enormi quantità di dati.
Se restituisci grandi quantità di dati in .NET e li "metti nella cache" in sessione, esaurirai rapidamente la memoria sul tuo server.