/// <summary> /// create and expression ( operator ";" ) /// </summary> /// <param name="visitor"></param> /// <param name="context"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> public static Expression <Func <T, bool> > GetAndExpression <T>( IRSqlQueryVisitor <Expression <Func <T, bool> > > visitor, RSqlQueryParser.AndContext context) { if (visitor == null) { throw new ArgumentNullException(nameof(visitor)); } if (context == null) { throw new ArgumentNullException(nameof(context)); } var right = context.constraint()[0].Accept(visitor); if (context.constraint().Length == 1) { return(right); } for (var i = 1; i < context.constraint().Length; i++) { var left = context.constraint()[i].Accept(visitor); right = Expression.Lambda <Func <T, bool> >(Expression.And(left.Body, right.Body), left.Parameters); } return(right); }