2010-03-25 99 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