public string Translate(FilterConditionSpecification specification) { if (specification == null) { throw new ArgumentNullException(nameof(specification)); } var leftTranslated = _filterSpecificationTranslatorDirector.Translate((dynamic)specification.LeftSpecification); var rightTranslated = _filterSpecificationTranslatorDirector.Translate((dynamic)specification.RightSpecification); var operation = Translate(specification.Condition); return($"{leftTranslated} {operation} {rightTranslated}"); }
public string Translate([NotNull] FilterGroupSpecification specification) { if (specification == null) { throw new ArgumentNullException(nameof(specification)); } var innerSpecification = _filterSpecificationTranslatorDirector.Translate((dynamic)specification.Specification); return($"({innerSpecification})"); }
public string Translate([NotNull] DslFilterBlock queryBlock) { if (queryBlock == null) { throw new ArgumentNullException(nameof(queryBlock)); } var translated = _filterSpecificationTranslatorDirector.Translate((dynamic)queryBlock.Specification); return($".Where(x => {translated})"); }
public string Translate([NotNull] FilterArraySpecification specification) { if (specification == null) { throw new ArgumentNullException(nameof(specification)); } var translatedSpecifications = specification .Specifications .Select(_ => _filterSpecificationTranslatorDirector.Translate((dynamic)_)); return($"new[]{{{string.Join(",", translatedSpecifications)}}}"); }
public string Translate([NotNull] FilterSpecification specification) { if (specification == null) { throw new ArgumentNullException(nameof(specification)); } var leftTranslated = _filterSpecificationTranslatorDirector.Translate((dynamic)specification.LeftSpecification); var rightTranslated = _filterSpecificationTranslatorDirector.Translate((dynamic)specification.RightSpecification); switch (specification.Operator) { case FilterOperator.In: return($"{rightTranslated}.Contains({leftTranslated})"); case FilterOperator.Contains: return($"{leftTranslated}.Contains({rightTranslated})"); } var operation = Translate(specification.Operator); return($"{leftTranslated} {operation} {rightTranslated}"); }