在指定的LINQtoEntities查询表达式中未绑定参数“f”。

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在指定的LINQtoEntities查询表达式中未绑定参数“f”。

我使用的EF6,由于需要动态使用linq所以从网上找了一段代码public static class PredicateBuilder
{
public static Expression<Func<T, bool>> True<T>() { return f => true; }
public static Expression<Func<T, bool>> False<T>() { return f => false; }
public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2)
{
var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
return mbda<Func<T, bool>>
(Expression.OrElse(expr1.Body, invokedExpr), expr1.Parameters);
}
public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2)
{
var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
return mbda<Func<T, bool>>
(Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters);
}
}
此代码其实我在以前项目中其实也用过,只不过那个使用用的不是ef 而是老版本的linq
如果在ef中使用它那必须配合linqkit.这个东西是很牛逼的我们在以前项目中将linq改造支出oracle也是用它,由于前面经验我就放心用了,但是当我使用动态生成的时候发现报错"在指定的LINQ to Entities 查询表达式中未绑定参数“f”。

”原因不知道为什么,后面整体一天才发现linq其实也有上面我贴出来的代码类,我就将我上面代码去掉使用linqkit里面的,后面发现linqkit源代码才知道其实也是一样的代码,这下真没招了,后面找了很多文章才发现linqkit还有另外一个方法Expand()。

还别说用了这个方法以后可以了。

心情格外好,所以写下供后来者参考
英文可以的话可以读:
我英文不太行,所以我就不读进去看了看代码,大概猜啥意思。

相关文档
最新文档