/// <summary> /// Initializes a new <see cref="FilterExpression"/> /// </summary> /// <param name="field1">The left side of the expression</param> /// <param name="operator">The operator</param> /// <param name="field2">The right side of the expression</param> /// <param name="andOr">The connection between this and the next expression</param> public FilterExpression(object field1, FieldOperators @operator, object field2, FieldAndOr andOr) { AndOr = andOr; Field1 = field1; Operator = @operator; Field2 = field2; }
/// <summary> /// Formats the Operator accordingly to the database dialect /// </summary> /// <param name="operator">The opeperator</param> /// <returns>A string containing the formatted operator</returns> protected virtual string FormatOperator(FieldOperators @operator) { if (Operators == null) { throw new Exception($"The '{nameof(Operators)}' Dictionary is null"); } if (Operators.Count == 0) { throw new Exception($"The '{nameof(Operators)}' Dictionary is initialized but empty"); } if (!Operators.ContainsKey(@operator)) { throw new Exception($"The operator '{Enum.GetName(typeof(FieldOperators), @operator)}' is not defined"); } return(Operators[@operator]); }
/// <summary> /// Initializes a new expression /// </summary> /// <param name="field">The Field to be Processed by the <see cref="Expression"/>.</param> /// <param name="operator">The Operator. See <see cref="FieldOperators"/> for reference</param> protected Expression(Field field, FieldOperators @operator) : this(field) { Operator = @operator; }
/// <summary> /// Initializes a new instance of an <see cref="FilterExpression{T}"/>. /// </summary> /// <param name="field">A <see cref="Field"/> to be processed by the expression</param> /// <param name="operator">The Operator. See <see cref="FieldOperators"/> for reference</param> /// <param name="values">A <see cref="IList{T}"/> of values</param> public FilterExpression(Field field, FieldOperators @operator, params T[] values) : this(field, @operator) { Values = values; ParseOperator(); }
/// <summary> /// Initializes a new instance of an <see cref="FilterExpression{T}"/>. /// </summary> /// <param name="field">A <see cref="Field"/> to be processed by the expression</param> /// <param name="operator">The Operator. See <see cref="FieldOperators"/> for reference</param> /// <param name="values">A <see cref="IList{T}"/> of values</param> public FilterExpression(Field field, FieldOperators @operator, IList <T> values) : this(field, @operator) { Values = values; ParseOperator(); }
/// <summary> /// Initializes a new instance of an <see cref="FilterExpression{T}"/>. /// </summary> /// <param name="field">A <see cref="Field"/> to be processed by the expression</param> /// <param name="value">The Value to be assigned to the field</param> /// <param name="operator">The Operator. See <see cref="FieldOperators"/> for reference</param> public FilterExpression(Field field, FieldOperators @operator, T value) : this(field, @operator) { Values.Add(value); ParseOperator(); }
/// <summary> /// Initializes a new instance of an <see cref="FilterExpression{T}"/>. /// </summary> /// <param name="field">A <see cref="Field"/> to be processed by the expression</param> /// <param name="operator">The Operator. See <see cref="FieldOperators"/> for reference</param> public FilterExpression(Field field, FieldOperators @operator) : base(field, @operator) { Field = field; ParseOperator(); }