title: Linq style query for CreateDocumentQuery<T> Where OrderBy
body: <p>I found a sample on the internet for loading documents from Azure Cosmos DB with SQL API.
  It appears to load all the documents first then the .Where and the .OrderBy are applied after. Is there a way the 'GetItemsAsync' method can be rewritten so that the code below would work without loading the whole collection first?</p>
  
  <p>Is there a way to call the 'GetItemsAsync' method in this manner?</p>
  
  <pre><code>foreach(Member pMember in GetItemsAsync&lt;Member&gt;()
                                .Where(m=&gt; m.Name == "Mike").OrderBy(m=&gt; m.LastName))
  {
  
  }
  </code></pre>
  
  <p>Would .AsEnumerable work?</p>
  
  <pre><code>public static async Task&lt;IEnumerable&lt;T&gt;&gt; GetItemsAsync()
  {
      IDocumentQuery&lt;T&gt; query = _documentClient.CreateDocumentQuery&lt;T&gt;(
      UriFactory.CreateDocumentCollectionUri(DatabaseId,CollectionId),
          new FeedOptions {  MaxItemCount = -1 }).AsDocumentQuery();
  
      List&lt;T&gt; results = new List&lt;T&gt;();
      while (query.HasMoreResults)
      {
          results.AddRange(await query.ExecuteNextAsync&lt;T&gt;());
      }
  
      return results;
  }
  </code></pre>
  
  <p>or am I forced to structure it like this: with the predicate as a parameter in the method?</p>
  
  <pre><code>public static async Task&lt;IEnumerable&lt;T&gt;&gt; GetItemsAsync(Expression&lt;Func&lt;T, bool&gt;&gt; predicate)
  {
      IDocumentQuery&lt;T&gt; query = _documentClient.CreateDocumentQuery&lt;T&gt;(
      UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId),
          new FeedOptions {  MaxItemCount = -1 })
          .Where(predicate).AsDocumentQuery();
  
      List&lt;T&gt; results = new List&lt;T&gt;();
      while (query.HasMoreResults)
      {
          results.AddRange(await query.ExecuteNextAsync&lt;T&gt;());
      }
  
      return results;
  }
  </code></pre>