2010-03-25 106 views
0

HI,我使用LINQ到实体,我想这如何创建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<Genre, bool> expr = g => g.visible 
expr += g => g.position < 5 

但我总是有一个'内部1025错误.NET'。 任何人都可以帮助我吗? 谢谢。

回答

3

您需要使用Expression s,而不是委托人。您可以使用Joseph Albahari的PredicateBuilder类来动态构建谓词:

Expression<Func<Genre, bool>> expr = g => g.visible; 
expr = expr.And(g => g.position < 5); 
+0

非常感谢。我会试一试。 – 2010-03-26 08:22:35