public static Expression And(IEnumerable <Expression> expressions, ParameterExpression parameterExpression)
{
Expression overallExpression = Expression.IsTrue(Expression.Constant(true, typeof(bool)));
if (expressions.Count() == 1)
{
overallExpression = expressions.First();
}
if (expressions.Count() > 1)
{
Expression?start = null;
foreach (var expression in expressions)
{
start = start == null
? expression
: Expression.AndAlso(start, expression);
}
if (start != null)
{
overallExpression = start !;
}
}
return(overallExpression);
}