I want to dynamically select columns from an IQueryable<T>
using Linq. T being a ContractDto (in this case).
Currently I have
private static IQueryable<T> Select<T>(IQueryable<T> queryable, IEnumerable<string> columns)
{
LambdaExpression lambda = DynamicExpression.ParseLambda(queryable.ElementType, null, $"new ({string.Join(",", columns)})", queryable);
MethodCallExpression select = Expression.Call(typeof(Queryable), "Select", new Type[] { queryable.ElementType, lambda.Body.Type }, Expression.Constant(queryable), Expression.Quote(lambda));
return queryable.Provider.CreateQuery<T>(select);
}
However I am getting an error
System.InvalidCastException: 'Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery`1[DynamicClass2]' to type 'System.Linq.IQueryable`1[Business.Dto.ContractDto]'.'