我有函数做动态linq在dbcontext上dbset但在哪里得到错误类型System.Linq.IQueryable
上没有方法'Where'存在
我现在不要!!!
using System.Linq;
public virtual Queryable _List(string fieldNames="", string values="")
{
_Db = Contex.Set<T>();
var type = typeof(T);
var property = type.GetProperty(fieldNames);
var parameter = Expression.Parameter(type, "p");
var propertyAccess = Expression.MakeMemberAccess(parameter, property);
var orderByExp = Expression.Lambda(propertyAccess, parameter);
var body2 = Expression.Call(
typeof(Queryable),
"Where",
// I things this line no good but I don't now ...
new Type[] { type, property.PropertyType },
_Db.Expression,
Expression.Quote(orderByExp));
var m = _Db.Provider.CreateQuery<T>(body2);
return m;
}
答案 0 :(得分:2)
Queryable.Where
没有超载,它有两个类型参数。你可能正在使用这种方法:
IQueryable<TSource> Where<TSource> (this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate)
这意味着您应该替换该行:
new Type[] { type, property.PropertyType },
使用:
new Type[] { type }, // this is TSource