ho questo blocco di codice con cui sto lavorando:Ottenere specifica gamma di voci di elenco (LINQ)
// get the collection of librarys from the injected repository
librarySearchResults = _librarySearchRepository.GetLibraries(searchTerm);
// map the collection into a collection of LibrarySearchResultsViewModel view models
libraryModel.LibrarySearchResults =
librarySearchResults.Select(
library =>
new LibrarySearchResultsViewModel
{
Name = library.Name,
Consortium = library.Consortium,
Distance = library.Distance,
NavigateUrl = _librarySearchRepository.GetUrlFromBranchId(library.BranchID),
BranchID = library.BranchID
}).ToList();
Tutto questo non fa altro che prendere i risultati di GetLibraries(searchTerm)
, che restituisce un elenco di oggetti LibrarySearchResult
, e li mappa su un elenco di LibrarySearchResultsViewModel
.
Mentre questo funziona bene per piccoli set di risultati, una volta che mi alzo tra i 1.000, inizia davvero a trascinare, impiegando circa 12 secondi prima che finisca la conversione.
La mia domanda:
Dal momento che sto usando paginazione qui, ho davvero solo bisogno di visualizzare una frazione dei dati che viene restituito in un grande set di risultati. C'è un modo per utilizzare qualcosa come Take()
o GetRange()
, in modo che la conversione avvenga solo per i record che devo visualizzare? Dì su 1.000 record, voglio solo ottenere record da 20 a 40 e convertirli nei modelli di visualizzazione.
Sono tutti per qualsiasi suggerimento su come migliorare o refactoring questo codice.
Vedere le domande frequenti sulle firme. http://stackoverflow.com/help/behavior Specificamente 'Non utilizzare firma, tagline o saluti. Ogni post che fai è già "firmato" con la tua carta utente standard, che collega direttamente alla tua pagina utente. Se si utilizza una firma aggiuntiva o uno slogan, verrà rimosso per ridurre il rumore nelle domande e nelle risposte. – cadrell0
Felice di essere di aiuto. Ti consiglio di leggere le FAQ nella sua interezza per assicurarti di seguire le linee guida della community. Raccomando anche questo post su meta per maggiori informazioni. http://meta.stackexchange.com/questions/7931/faq-for-stack-exchange-sites – cadrell0