public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) { HqlExpression value = visitor.Visit(arguments[0]).AsExpression(); HqlTreeNode inClauseNode = BuildInClause(arguments, treeBuilder, visitor); HqlTreeNode inClause = treeBuilder.In(value, inClauseNode); if (method.Name == "NotIn") inClause = treeBuilder.BooleanNot((HqlBooleanExpression)inClause); return inClause; }
public HqlTreeNode xBuildHql( MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) { // arguments[0] is the expression as it already exists // arguments[1] is our constant value Console.WriteLine("arg[1]: {0}", arguments[1]); var value = visitor.Visit(arguments[1]).AsExpression(); Console.WriteLine("BuildHql value: {0}", value); HqlTreeNode inClauseNode; if (arguments[0] is ConstantExpression) { Console.WriteLine("Is constant expression"); inClauseNode = BuildFromArray((Array)((ConstantExpression)arguments[0]).Value, treeBuilder); } else { Console.WriteLine("Building from expression"); Console.WriteLine("expression: {0}", arguments[0]); inClauseNode = BuildFromExpression(arguments[0], visitor); } HqlTreeNode inClause = treeBuilder.In(value, inClauseNode); return inClause; }