私が使用しているこのコードブロックがあります:
// 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();
GetLibraries(searchTerm)
これは、オブジェクトのリストを返すの結果を取得し、LibrarySearchResult
それらを のリストにマップするだけLibrarySearchResultsViewModel
です。
これは小さな結果セットではうまく機能しますが、1,000 に達すると、実際にドラッグし始め、変換が完了するまでに約 12 秒かかります。
私の質問 :
ここではページングを使用しているため、大きな結果セットで返されるデータの一部を表示するだけで十分です。Take()
またはのようなものを利用してGetRange()
、表示する必要があるレコードに対してのみ変換が行われるようにする方法はありますか? たとえば、1,000 レコードのうち、20 から 40 のレコードのみを取得し、それらをビュー モデルに変換します。
このコードの改善またはリファクタリングに関する提案も歓迎します。