Qual è lo schema migliore per ottenere risultati impaginati con LINQ su SQL?Risultati di ricerca impaginati con LINQ su SQL
Ho il seguente scenario:
Supponiamo che voglio cercare articoli tavolo da descrizione. Posso fare facilmente:
public IQueryable<Item> FindItemsByDescription(string description)
{
return from item in _dc.Items
where item.Description.Contains(description);
}
Ora, quale sarebbe il modo migliore per impaginare questo set di risultati?
- Devo eseguire un conteggio domanda prima di fare questo per scoprire la dimensione set di risultati e quindi limitare la query in base a quello che voglio? Mi sento come se questa fosse la strada da percorrere.
- Devo eseguire la query completa, prendere il conteggio dalla dimensione dell'array e restituire solo un sottoinsieme impaginato da questo array? Credo che questo sarà un enorme spreco di tempo se il set di risultati è abbastanza grande ... O è LINQ a SQL fare un po 'di magia qui?
Esiste uno schema LINQ to SQL per eseguire questa operazione?
MODIFICA: I deve chiarire una piccola cosa. Sono a conoscenza dei metodi Take and Skip. Ma, prima di utilizzare Prendere e Salta, come dovrei ottenere il conteggio totale dei risultati che la query recupererebbe?
Pablo - Ho aggiornato il mio post per includere più informazioni sul paging. (Salu2) –
Grazie mille Basilio. È questo, il rendimento è il modo migliore per farlo? Sapete quante query verranno eseguite contro il server SQL con questo approccio? –
Pablo - Il codice nell'esempio eseguirà 2 query SQL separate. Tuttavia, questo non deve essere il caso. Puoi prendere i risultati dalla query e inserirla in una lista usando ToList(), quindi ottenere il Count() da quello.In modo che si finisca con una sola chiamata al database. –