Как создать выражение Linq To Entities - PullRequest
0 голосов
/ 25 марта 2010

Привет, я использую Linq To Entities, и я хотел бы преобразовать это

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». Кто-нибудь может мне помочь? Благодаря.

1 Ответ

3 голосов
/ 25 марта 2010

Вам нужно использовать Expression с, а не делегатов. Вы можете использовать класс PredicateBuilder Джозефа Албахари для динамического построения предиката:

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