我正在使用 LINQKit 扩展LINQ To Entities功能:
public Boolean IsMatched(Int32 age)
{
return age > 18;
}
public IQueryable<Users> GetAllMatchedUsers(Func<Int32, Boolean> isMatched)
{
return qry = _Context.Users.AsExpandable().Where(x => x.IsActive && isMatched(x.Age));
}
此代码用于 Entity Framework ORM 对象(_Context为 DbContext ,用户 - DBSet )
此代码抛出异常
无法投射类型的对象 输入'System.Linq.Expressions.FieldExpression' 'System.Linq.Expressions.LambdaExpression'
摆脱 Func 并将 IsMatched 硬编码到 GetAllMatchedUsers 解决了这个问题。但我需要使用 Func 将不同的选择标准从业务逻辑层传递到我的数据访问层
P上。 S. IsMatched 是高度简化的实现,例如当然
请帮帮我。
答案 0 :(得分:1)
使用LinqKit,您必须通过Expression<Func<Int32, Boolean>> isMatched
Func<...>
已经编译成C#运行时。
Expression<Func<...>>
可以作为表达式树传递给SQL。