Я использую библиотеку Dynamic Linq в своем приложении .NET MVC для запроса базы данных SQL Server. Пока все работает нормально.
Мне нужно сделать динамический выбор, но всегда возвращать ожидаемое выражение типа 'T':
public static IQueryable<T> SelectByFields<T>(this IQueryable<T> q, string expression, params object[] values) // IEnumerable<string> fieldNames)
{
try
{
var param = Expression.Parameter(typeof(T), "p");
var lambda = System.Linq.Dynamic.DynamicExpression.ParseLambda(new ParameterExpression[] { param }, typeof(T), expression, values);
Type[] types = new Type[] { q.ElementType, lambda.Body.Type };
return q.Provider.CreateQuery<T>(Expression.Call(typeof(Queryable), "Select", types, q.Expression, Expression.Quote(lambda)));
}
catch
{
return q;
}
T
(вход) доU
(выход). В противном случае единственными доступными для выбора полями будут поля того же типа контейнера. - person leppie   schedule 16.01.20151[System.Object]' al tipo 'System.Linq.IQueryable
1[AccesoDatosEF.Sujetos.CLIENTE]'. Я думаю, что ошибка заключается в выражении - person Juan Antonio Mañas   schedule 16.01.2015typeof(Queryable<T>)
? - person leppie   schedule 16.01.2015