public QueryConditionNode(QueryConditionNode node) { Name = node.Name; _LValue = node.LValue; _Condition = node.Condition; _RValue = node.RValue; }
public static QueryNode MapQValue(QueryNode qNode, Func <IQueryValue, IQueryValue> mapFunc) { if (qNode is QueryGroupNode) { var group = new QueryGroupNode((QueryGroupNode)qNode); for (int i = 0; i < group.Nodes.Count; i++) { group.Nodes[i] = MapQValue(group.Nodes[i], mapFunc); } return(group); } if (qNode is QueryConditionNode) { var origCndNode = (QueryConditionNode)qNode; var cndNode = new QueryConditionNode(origCndNode.Name, mapFunc(origCndNode.LValue), origCndNode.Condition, mapFunc(origCndNode.RValue)); return(cndNode); } if (qNode is QueryNegationNode) { var negNode = new QueryNegationNode((QueryNegationNode)qNode); for (int i = 0; i < negNode.Nodes.Count; i++) { negNode.Nodes[i] = MapQValue(negNode.Nodes[i], mapFunc); } return(negNode); } return(qNode); }
protected override string BuildConditionRValue(QueryConditionNode node) { var rValue = base.BuildConditionRValue(node); return((node.RValue is Query && ((node.Condition & Conditions.In) != Conditions.In)) ? "(" + rValue + ")" : rValue); }
protected virtual string BuildCondition(QueryConditionNode node) { Conditions condition = node.Condition & ( Conditions.Equal | Conditions.GreaterThan | Conditions.In | Conditions.LessThan | Conditions.Like | Conditions.Null ); string lvalue = BuildConditionLValue(node); string rvalue = BuildConditionRValue(node); string res = null; switch (condition) { case Conditions.GreaterThan: res = String.Format("{0}>{1}", lvalue, rvalue); break; case Conditions.LessThan: res = String.Format("{0}<{1}", lvalue, rvalue); break; case (Conditions.LessThan | Conditions.Equal): res = String.Format("{0}<={1}", lvalue, rvalue); break; case (Conditions.GreaterThan | Conditions.Equal): res = String.Format("{0}>={1}", lvalue, rvalue); break; case Conditions.Equal: res = String.Format("{0}{2}{1}", lvalue, rvalue, (node.Condition & Conditions.Not) != 0 ? "<>" : "="); break; case Conditions.Like: res = String.Format("{0} LIKE {1}", lvalue, rvalue); break; case Conditions.In: res = String.IsNullOrWhiteSpace(rvalue) ? "0=1" : String.Format("{0} IN ({1})", lvalue, rvalue); break; case Conditions.Null: res = String.Format("{0} IS {1} NULL", lvalue, (node.Condition & Conditions.Not) != 0 ? "NOT" : ""); break; default: throw new ArgumentException("Invalid conditions set", condition.ToString()); } if ((node.Condition & Conditions.Not) != 0 && (condition & Conditions.Null) == 0 && (condition & Conditions.Equal) == 0) { return(String.Format("NOT ({0})", res)); } return(res); }
protected virtual string BuildConditionRValue(QueryConditionNode node) { return(BuildValue(node.RValue)); }
protected override string BuildConditionLValue(QueryConditionNode node) { var lValue = base.BuildConditionLValue(node); return((node.LValue is Query) ? "(" + lValue + ")" : lValue); }