Entity framework 如何创建Linq到实体表达式

Entity framework 如何创建Linq到实体表达式,entity-framework,linq-to-entities,lambda,Entity Framework,Linq To Entities,Lambda,您好,我正在使用Linq转换实体,我想将其转换为 return db.Products .Where(p => p.idUser.Equals(id) && p.Category.Genre.Any(g => g.visible)) 变成 Func<Genre, bool> expr = g => g.visible return db.Products .Where

您好,我正在使用Linq转换实体,我想将其转换为

return db.Products
         .Where(p => p.idUser.Equals(id) && 
                     p.Category.Genre.Any(g => g.visible))
变成

Func<Genre, bool> expr = g => g.visible

return db.Products
         .Where(p => p.idUser.Equals(id) && 
                     p.Category.Genre.Any(expr))
Func expr=g=>g.visible
返回数据库产品
其中(p=>p.idUser.Equals(id)&&
p、 类别。流派。任何(expr))
所以我可以用这样的东西来增加复杂性

Func<Genre, bool> expr = g => g.visible
expr += g => g.position < 5
Func expr=g=>g.visible
expr+=g=>g.位置<5
但我总是有一个“内部1025错误.NET”。 有人能帮我吗?
谢谢。

您需要使用
表达式,而不是委托。您可以使用Joseph Albahari的类动态构建谓词:

Expression<Func<Genre, bool>> expr = g => g.visible;
expr = expr.And(g => g.position < 5);
表达式expr=g=>g.visible;
expr=expr.And(g=>g.position<5);

您需要使用
表达式,而不是委托。您可以使用Joseph Albahari的类动态构建谓词:

Expression<Func<Genre, bool>> expr = g => g.visible;
expr = expr.And(g => g.position < 5);
表达式expr=g=>g.visible;
expr=expr.And(g=>g.position<5);