私はこのコードブロックは、私が働いていますリスト項目(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();
このすべては、LibrarySearchResult
オブジェクトのリストを返すGetLibraries(searchTerm)
、結果を取るではないとそれらをLibrarySearchResultsViewModel
のリストにマップします。
これは小さな結果セットではうまくいくが、1,000になると実際にドラッグが始まり、変換が完了するまで約12秒かかります。
私の質問:
私はここにページングを使用していますので、私は本当に唯一の大規模な結果セットに返されていたデータの一部を表示する必要があります。 Take()
またはGetRange()
のようなものを利用する方法があるので、表示する必要があるレコードに対してのみ変換が行われますか? 1,000レコードから言えば、私はレコード20から40を取得し、それらをビューモデルに変換したいだけです。
このコードの改善やリファクタリングに関する提案もあります。
署名に関するよくある質問をご覧ください。 http://stackoverflow.com/help/behavior特に、署名、タグライン、または挨拶を使用しないでください。 あなたが作るすべての投稿は、あなたのユーザーページに直接リンクしている標準のユーザーカードですでに "署名"されています。追加の署名やタグラインを使用すると、質問と回答のノイズを減らすために削除されます。 ' – cadrell0
喜んで支援します。あなたがコミュニティガイドラインに従っているかどうかを確認するために、FAQを読むことをお勧めします。私はさらに詳しい情報については、このポストをメタでお勧めします。 http://meta.stackexchange.com/questions/7931/faq-for-stack-exchange-sites – cadrell0