Feedback on ASP.NET Web API

OData string transform to .NET types

Consider having the following string OData query string:

$filter=(Name eq 'bla)&$skip=5

Would be awesome if you can get the lambda function of $filter. Aswell things like skip, sort field and order, etc.

This would be useful for creating a specific AJAX handler which would filter out a dataset, create Observable data streams (Signalr), etc...

Would be cool if we can extend this parser (get the AST and override parts of the Visitor pattern applied to build an Expression).
Why would you not satisified with only $filter -> Func<T, bool>? Well other collections like (Nhibernate) like to do filtering on a specific way.

http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx

Having only Func<T, bool> as output for $filter would make it too specific.

5 votes
Vote
Sign in
Check!
(thinking…)
Reset
or sign in with
  • facebook
  • google
    Password icon
    I agree to the terms of service
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    Mark de JongMark de Jong shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

    2 comments

    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      Submitting...
      • Mark de JongMark de Jong commented  ·   ·  Flag as inappropriate

        That's nice, haven't seen that yet..! I have to dig into that, but from my first impression it's really specific to WebApi. Would be great if i can mix it up in a light weight SignalR PersistentConnection (aka Observable stream of events) w/o mixing WebApi :)

      • Alex JamesAlex James commented  ·   ·  Flag as inappropriate

        This is already possible using ODataQueryOptions.

        Hanging off ODataQueryOptions is a Filter property which in turn holds a Node which is an AST representing the $filter. You could easily translate this to whatever query language you want directly. We simply provide the binding to Func<T,bool> as a convenience for what is a very common scenario.

        See this for more: http://blogs.msdn.com/b/alexj/archive/2012/08/21/web-api-queryable-current-support-and-tentative-roadmap.aspx

      Feedback and Knowledge Base