Example #1
0
        protected virtual string ConvertToCondition(DynamicQueryCondition condition, int index)
        {
            string left  = GetLeft(condition, index);
            string right = GetRight(condition, index);

            switch (condition.Operator)
            {
            case DynamicQueryOperator.Equal:
                return($"{left} == {right}");

            case DynamicQueryOperator.NotEqual:
                return($"{left} != {right}");

            case DynamicQueryOperator.Greater:
                return($"{left} > {right}");

            case DynamicQueryOperator.GreaterOrEqual:
                return($"{left} >= {right}");

            case DynamicQueryOperator.Less:
                return($"{left} < {right}");

            case DynamicQueryOperator.LessOrEqual:
                return($"{left} <= {right}");

            case DynamicQueryOperator.StartWith:
                return($"{left}.StartsWith({right})");

            case DynamicQueryOperator.NotStartWith:
                return($"!{left}.StartsWith({right})");

            case DynamicQueryOperator.EndWith:
                return($"{left}.EndsWith({right})");

            case DynamicQueryOperator.NotEndWith:
                return($"!{left}.EndsWith({right})");

            case DynamicQueryOperator.Contain:
                return($"{left}.Contains({right})");

            case DynamicQueryOperator.NotContain:
                return($"!{left}.Contains({right})");

            default:
                throw new InvalidOperationException($"Unknown dynamic query operator: {condition.Operator}");
            }
        }
Example #2
0
 protected virtual string GetLeft(DynamicQueryCondition condition, int index)
 {
     return(condition.FieldName);
 }
Example #3
0
 protected virtual string GetRight(DynamicQueryCondition condition, int index)
 {
     return($"@{index}");
 }
Example #4
0
 protected override string GetLeft(DynamicQueryCondition condition, int index)
 {
     return($"DbFunctions.JsonValue(\"$.{condition.FieldName}\")");
 }