5

私が使用しているこのコードブロックがあります:

// 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 のレコードのみを取得し、それらをビュー モデルに変換します。

このコードの改善またはリファクタリングに関する提案も歓迎します。

4

2 に答える 2