/// <summary>
 /// Execute the query.
 /// </summary>
 /// <typeparam name="TResult">The result type.</typeparam>
 /// <param name="expression">The expression tree.</param>
 /// <returns>The result.</returns>
 public TResult Execute <TResult>(Expression expression)
 {
     expression = QueryRewriter.Rewrite(expression);
     return(this.provider.Execute <TResult>(expression));
 }
 /// <summary>
 /// Create generic query-able object.
 /// </summary>
 /// <typeparam name="TElement">The element.</typeparam>
 /// <param name="expression">The expression tree.</param>
 /// <returns>The generic query-able object.</returns>
 public IQueryable <TElement> CreateQuery <TElement>(Expression expression)
 {
     expression = QueryRewriter.Rewrite(expression);
     return(new InMemoryAsyncQueryable <TElement>(this.provider.CreateQuery <TElement>(expression), this.include));
 }