title: C# OData4 Apply OData query without controller returning Queryable
body: <p>I currently have an C# WebAPI that uses a version of OData that we wrote. We want to start using Microsoft's OData4 which can do more then our custom implementation.</p>
  
  <p>Creating a controller that extends the ODataController I can create a controller that automatically queries based on the query string. (Shown below)</p>
  
  <p>The problem is that it returns the results of the query when I want it to return the <code>Result</code> object which includes additional data. When I set the return type to Result though it will no longer apply the query string. </p>
  
  <p>How can I use the automatic queryable implementation and still return my own object? I've tried making a public method that returns the correct object and calls a private method returning the queryable but it doesn't filter the queryable correctly. </p>
  
  <p>Am I on the right track, or are there other options?</p>
  
  <pre><code>public class CallController : ODataController
  {
      [EnableQuery]
      public IQueryable&lt;Call&gt; GetCall()
      {
          var list = new List&lt;Call&gt;
          {
              new Call
              {
                  Id = 4
              },
              new Call
              {
                  Id = 9
              },
              new Call
              {
                  Id = 1
              }
          };
          return list.AsQueryable();
      }
  }
  </code></pre>
  
  <hr>
  
  <pre><code>public class Call
  {
      public int Id { get; set; }
  }
  </code></pre>
  
  <hr>
  
  <pre><code>public class Result
  {
       public Call[] Calls { get; set; }
       public string NewToken { get; set; }
       public string Warning { get; set; }
  }
  </code></pre>