Ho una query di linq abbastanza complessa per le entità che visualizzo su un sito web. Usa il paging quindi non faccio mai cadere più di 50 record alla volta per la visualizzazione.Come gestire set di risultati di grandi dimensioni con Linq alle entità?
Ma voglio anche dare all'utente la possibilità di esportare i risultati completi in Excel o in un altro formato di file.
La mia preoccupazione è che potrebbe esserci potenzialmente un gran numero di record caricati tutti in memoria contemporaneamente per fare ciò.
C'è un modo per elaborare un set di risultati linq 1 record alla volta come si potrebbe w/a datareader in modo che solo 1 record venga effettivamente tenuto in memoria alla volta?
Ho visto suggerimenti che se si enumera sulla query linq con un ciclo foreach che i record non saranno tutti letti in memoria in una sola volta e non sovraccaricheranno il server.
Qualcuno ha un collegamento a qualcosa che potrei leggere per verificarlo?
Apprezzerei qualsiasi aiuto.
Grazie
il risultato non dovrebbe essere una raccolta in memoria per impostazione predefinita. Stai facendo qualcosa (ToArray, ToList, qualsiasi cosa) per far sì che tutto venga portato in memoria? In caso contrario, basta scorrere i risultati (foreach, Select, qualunque) e si dovrebbe andare bene. –
Attualmente il mio metodo di ricerca chiama ToList() e restituisce l'elenco, ma è possibile cambiarlo facilmente per restituire invece QueryObject. Sei sicuro che se eseguirò un ciclo foreach su IQueryable, trasmetterà i dati in streaming? – user169867
Quindi il tuo 'ToList()' fondamentalmente farà qualcosa di simile a 'Lista