I am trying to convert a Linq query that I have working in Linq to be able to work in dynamic linq (using System.Linq.Dynamic) because I want a user to be able to form their
Get the source of Linq.Dynamic, copy paste the Where method, change the signature and the string with the function name inside the method and you're good to go. I did it to add Single First etc, I can't copy it here because I'm not on my dev machine but I'll do it later if necessary ;)
EDIT: here's the Single method if you decide to use it:
public static object Single(this IQueryable source)
{
if (source == null) throw new ArgumentNullException("source");
return source.Provider.Execute(
Expression.Call(
typeof(Queryable), "Single",
new Type[] { source.ElementType },
source.Expression));
}
Sorry to digg up a very old thread, but I thought I could add somevaluable information!
I had to do this for First()/FirstOrDefault() with Linq to Entities instead of your Linq to SQL and I can confirm @Guillaume86 's solution sure works!
Here's how I modified MicrosoftDynamic.sql: I added this inside the static DynamicQueryable class:
public static object FirstOrDefault(this IQueryable source)
{
if (source == null) throw new ArgumentNullException("source");
return source.Provider.Execute(
Expression.Call(
typeof(Queryable), "FirstOrDefault ",
new Type[] { source.ElementType },
source.Expression));
}
I also modified interface IEnumerableSignatures as
void FirstOrDefault();
(I used FirstOrDefault because First() isn't supported when it's not the last call in linq to entities)
You can repeat this for any supported function :)