/// <summary> /// Construct expression by a series of parameters. /// </summary> /// <param name="fieldName">Query expression field name</param> /// <param name="op">Query expression operator</param> /// <param name="value">Query expression value</param> /// <param name="configuration">Query field configuration</param> public QueryParameterExpression(string fieldName, QueryFieldOperators op, object value, QueryFieldConfiguration configuration) { this.FieldName = fieldName; this.Operator = op; this.Value = value; this.Configuration = configuration; }
/// <summary> /// Assembly query field name, operator and value to a predicate expression. /// </summary> /// <param name="fieldName"></param> /// <param name="op"></param> /// <param name="expressionValue"></param> /// <param name="parameters"></param> /// <returns></returns> private static string AssemblyExpressionString(string fieldName, QueryFieldOperators op, object expressionValue, ArrayList parameters) { if (expressionValue == null) return null; int startParameterIndex, parameterCount; List<string> subExpressions; string expressionString = ""; switch (op) { case QueryFieldOperators.Equal: expressionString = string.Format(CultureInfo.InvariantCulture, "{0}==@{1}", fieldName, parameters.Count); AddParameter(parameters, expressionValue); break; case QueryFieldOperators.GreaterEqualThan: expressionString = string.Format(CultureInfo.InvariantCulture, "{0}>=@{1}", fieldName, parameters.Count); AddParameter(parameters, expressionValue); break; case QueryFieldOperators.GreaterThan: expressionString = string.Format(CultureInfo.InvariantCulture, "{0}>@{1}", fieldName, parameters.Count); AddParameter(parameters, expressionValue); break; case QueryFieldOperators.LessEqualThan: expressionString = string.Format(CultureInfo.InvariantCulture, "{0}<=@{1}", fieldName, parameters.Count); AddParameter(parameters, expressionValue); break; case QueryFieldOperators.LessThan: expressionString = string.Format(CultureInfo.InvariantCulture, "{0}<@{1}", fieldName, parameters.Count); AddParameter(parameters, expressionValue); break; case QueryFieldOperators.Like: expressionString = string.Format(CultureInfo.InvariantCulture, "{0}.Contains(@{1})", fieldName, parameters.Count); AddParameter(parameters, expressionValue.ToString()); break; case QueryFieldOperators.StartsWith: expressionString = string.Format(CultureInfo.InvariantCulture, "{0}.StartsWith(@{1})", fieldName, parameters.Count); AddParameter(parameters, expressionValue.ToString()); break; case QueryFieldOperators.In: startParameterIndex = parameters.Count; parameterCount = AddParameter(parameters, expressionValue); subExpressions = new List<string>(); for (int parameterIndex = startParameterIndex; parameterIndex < startParameterIndex + parameterCount; parameterIndex++) subExpressions.Add(string.Format(CultureInfo.InvariantCulture, "{0}==@{1}", fieldName, parameterIndex)); expressionString = string.Format(CultureInfo.InvariantCulture, "({0})", subExpressions.Concat(" OR ")); break; case QueryFieldOperators.NotIn: startParameterIndex = parameters.Count; parameterCount = AddParameter(parameters, expressionValue); subExpressions = new List<string>(); for (int parameterIndex = startParameterIndex; parameterIndex < startParameterIndex + parameterCount; parameterIndex++) subExpressions.Add(string.Format(CultureInfo.InvariantCulture, "{0}!=@{1}", fieldName, parameterIndex)); expressionString = string.Format(CultureInfo.InvariantCulture, "({0})", subExpressions.Concat(" AND ")); break; case QueryFieldOperators.Between: IEnumerable enumerableExpressionValues = expressionValue as IEnumerable; if (enumerableExpressionValues == null) throw new ArgumentException(Resources.DP_BetweenValueMustBeEnumerableWithTwoItems); IEnumerable<object> expressionValues = enumerableExpressionValues.Cast<object>(); if (expressionValues.Count() != 2) throw new ArgumentException(Resources.DP_BetweenValueMustBeEnumerableWithTwoItems); expressionString = string.Format(CultureInfo.InvariantCulture, "({0}>=@{1} AND {0}<@{2})", fieldName, parameters.Count, parameters.Count + 1); AddParameter(parameters, expressionValue); break; } return expressionString; }
/// <summary> /// Construct expression by a series of parameters. /// </summary> /// <param name="fieldName">Query expression field name</param> /// <param name="op">Query expression operator</param> /// <param name="value">Query expression value</param> public QueryParameterExpression(string fieldName, QueryFieldOperators op, object value) { this.FieldName = fieldName; this.Operator = op; this.Value = value; }
private static string TranslateQueryFieldOperator(QueryFieldOperators queryFieldOperator) { switch (queryFieldOperator) { case QueryFieldOperators.Between: return Resources.DP_QueryFieldOperator_Between; case QueryFieldOperators.Equal: return Resources.DP_QueryFieldOperator_Equal; case QueryFieldOperators.GreaterEqualThan: return Resources.DP_QueryFieldOperator_GreaterEqualThan; case QueryFieldOperators.GreaterThan: return Resources.DP_QueryFieldOperator_GreaterThan; case QueryFieldOperators.In: return Resources.DP_QueryFieldOperator_In; case QueryFieldOperators.LessEqualThan: return Resources.DP_QueryFieldOperator_LessEqualThan; case QueryFieldOperators.LessThan: return Resources.DP_QueryFieldOperator_LessThan; case QueryFieldOperators.Like: return Resources.DP_QueryFieldOperator_Like; case QueryFieldOperators.NotIn: return Resources.DP_QueryFieldOperator_NotIn; case QueryFieldOperators.StartsWith: return Resources.DP_QueryFieldOperator_StartsWith; } return Resources.DP_QueryFieldOperator_Auto; }