Q: How to convert this Lambda to an Expression How to convert a Func with a diferent signature to an Expression with a different signature:
how to convert when there is a custom logic in the conversion and the syntax is not quite the same.
Expression<Func<T, bool>) Convert(Func<T, List<TJ>, bool> expr2)
{
    // the returning bool would be the execution result of expr2(t, list) where t is the T and list is of type List<TJ>

    // the returning T would be the same T

    return Expression.Lambda<Func<T, bool>>
                  (???);
}

I'm trying to write the OrForEeachBatch method as shown below which will use the Or method:
internal static Expression<Func<T, bool>> OrForEachBatch<T, TJ>(this Expression<Func<T, bool>> expr1, List<List<TJ>> batches, Func<T, List<TJ>, bool> expr2)
{
    for (int index = 0; index < batches.Count; index++)
    {
        List<TJ> eventIdBatch = batches[index];

        Expression<Func<T, bool>> converted = Convert(expr2);

        expr1 = expr1.Or(converted);
    }

    return expr1;
}

The problem is the Or() method requires an expression not the execution of expr2
Ultimately I could ideally be using it like this:
 var batches = new List<List<int>>();
 var predicate = PredicateBuilder
                    .False<Event>()
                    .Or(e => e.ModifiedDate >= modifiedSince.Value)
                    .OrForEachBatch(batches, (e, batch) => batch.Contains(e.Id));

Any bright developer who can solve this?
If there were with the same syntax I could be using the below method for example:
private static Expression<Func<T, bool>> FuncToExpression<T>(Func<T, bool> f)  
{  
    return x => f(x);  
} 

