I'm try'n to create a dynamic query tool using System.Linq.Expressions.Expression (WPF/c#4.0) It runs against an OData Service.
So far, all is working as long as I limit the conditions to build in options like Equal(..), GreaterThan(..) etc. There seems to be no build in contains/Like condition so I tried building my own. There are a handful of articles already out there. One I tried is How to create a System.Linq.Expressions.Expression for Like?.
Now if I use the above solution, the resulting where expression is
whereCallExpression = {Convert([10000]).Expand("A,B").Where(clt => MyLike(clt.LastName, "te"))}'
which is nice, but wrong, since it does not translate into a valid Odata query.
If I use condition 'Equal', the result is
whereCallExpression = {Convert([10000]).Expand("A,B").Where(clt => (clt.LastName == "te"))}
which results in the OData query
results = {http://.../Clients()?$filter=LastName eq 'te'&$expand=A,B}
and is working as expected.
Am I doing something wrong with the implementation of the solution, or can it not be used with OData?
It should transfer to something like ...?$filter=substringof('te', LastName ) eq true
Any solution on how to fix this?
Regards
Andreas
PS, I implemented the solution extension in a static class, all I changed is the name of the called method from 'Like' to 'MyLike' Also, since the code used to build the expressions is working with any of the build-in condition, I assume, for now that part is ok. I can post parts of it if needed