i have an extension method which a person was really helpful to give me... it does an orderby on IQueryable ... but i wanted one to do a normal IQueryable (non generic)
Well, quite simply those methods aren't available for IQueryable
. If you look at the Queryable methods you'll see they're almost all based on IQueryable<T>
.
If your data source will really be an IQueryable<T>
at execution time, and you just don't know what T
is, then you could find that out with reflection... or in C# 4, just use dynamic typing:
public static IQueryable GetPage(this IQueryable query,
int page, int pageSize, out int count)
{
int skip = (int)((page - 1) * pageSize);
dynamic dynamicQuery = query;
count = Queryable.Count(dynamicQuery);
return Queryable.Take(Queryable.Skip(dynamicQuery, skip), pageSize);
}
The dynamic bit of the C# compiler will take care of working out T
for you at execution time.
In general though, I'd encourage you to just try to use the generic form everywhere instead - it's likely to be significantly simpler.
The question is old but when someone needs the IQueryable extension methods then he/she should return IQueriable when the return type is anonymous.