title: Paginated search results with LINQ to SQL
body: <p>What's the best pattern to get paginated results with <em>LINQ to SQL</em>?</p>
  
  <p>I have the following scenario:</p>
  
  <p>Suppose I want to search <em>items</em> table by <em>description</em>. I can easily do:</p>
  
  <pre><code>public IQueryable&lt;Item&gt; FindItemsByDescription(string description)
  {
     return from item in _dc.Items
            where item.Description.Contains(description);
  }
  </code></pre>
  
  <p>Now, what would be the best way to paginate this result set?</p>
  
  <ol>
  <li>Should I perform a <em>count</em> query before doing this to find out the result set size and then limit this query according to what I want? I feel like this is the way to go.</li>
  <li>Should I perform the full query, take the count from the array size and return only a paginated subset from this array? I feel like this will be a huge waste of time if the resultset is big enough... Or is <em>LINQ to SQL</em> doing some magic here?</li>
  </ol>
  
  <p>Is there a <em>LINQ to SQL</em> common pattern for performing this operation?</p>
  
  <p>EDIT: I <em>must</em> clarify a one little thing. I am aware of Take and Skip methods. But, before using <strong>Take</strong> and <strong>Skip</strong>, how should I get the <strong>total count</strong> of results that query would retrieve?</p>