title: Get Specific Range of List Items (LINQ)
body: <p>I have this block of code I'm working with :</p>
  
  <pre><code>// 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 =&gt;
          new LibrarySearchResultsViewModel
          {
              Name = library.Name,
              Consortium = library.Consortium,
              Distance = library.Distance,
              NavigateUrl = _librarySearchRepository.GetUrlFromBranchId(library.BranchID),
              BranchID = library.BranchID
          }).ToList();
  </code></pre>
  
  <p>All this does is take the results of <code>GetLibraries(searchTerm)</code>, which returns a list of <code>LibrarySearchResult</code> objects, and maps them over to a list of <code>LibrarySearchResultsViewModel</code>'s.</p>
  
  <p>While this works well for small result sets, once I get up into the 1,000's, it really starts to drag, taking about 12 seconds before it finishes the conversion.</p>
  
  <p><strong>My question :</strong></p>
  
  <p>Since I'm using paging here, I really only need to display a fraction of the data that's being returned in a large result set. Is there a way to utilize something like <code>Take()</code> or <code>GetRange()</code>, so that the conversion only happens for the records I need to display? Say out of 1,000 records, I only want to get records 20 through 40, and convert them over to the view models. </p>
  
  <p>I'm all for any suggestions on improving or refactoring this code as well.</p>