Здравствуйте, Alexander Polyakov, Вы писали:
AP>А полный код примера с вызовом MyMethod?
Решается несложным хелпером:
ints
.WhereOr(MyMethod(x, c1, c2))
.WhereOr(x => x > c3 && x < c4);
Но можно и немножко похитрее, в более общем виде. linq2db.
ints.Where(x => MyMethod(x, c1, c2) || (x > c3 && x < c4));
...
[ExpressionMethod("MyMethodExpr")]
private static bool MyMethod(int x, int c1, int c2)
{
return (x > c1 && x < c2);
}
private static Expression<Func<int, int, int, bool>> MyMethodExpr()
{
return (x, c1, c2) => x > c1 && x < c2;
}
Такой вариант, помимо прочего, позволяет декомпозировать куски кода, возвращающе не IQueryable, а скалярные значения.