private Expression CombineComparisons (
Expression previousParts,
Expression currentPart,
ExpressionType comparisonExpressionType,
Expression leftCompoundExpression,
Expression rightCompoundExpression)
{
if (previousParts == null)
{
previousParts = currentPart;
}
else
{
switch (comparisonExpressionType)
{
case ExpressionType.Equal:
previousParts = Expression.AndAlso (previousParts, currentPart);
break;
case ExpressionType.NotEqual:
previousParts = Expression.OrElse (previousParts, currentPart);
break;
default:
var message = string.Format (
"Compound values can only be compared using 'Equal' and 'NotEqual', not '{0}'. Expressions: {1}, {2}",
comparisonExpressionType,
FormattingExpressionTreeVisitor.Format (leftCompoundExpression),
FormattingExpressionTreeVisitor.Format (rightCompoundExpression));
throw new NotSupportedException (message);
}
}
return previousParts;
}
}