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}"); } }
protected virtual string GetLeft(DynamicQueryCondition condition, int index) { return(condition.FieldName); }
protected virtual string GetRight(DynamicQueryCondition condition, int index) { return($"@{index}"); }
protected override string GetLeft(DynamicQueryCondition condition, int index) { return($"DbFunctions.JsonValue(\"$.{condition.FieldName}\")"); }