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}");
        }
예제 #2
0
        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})");
        }
예제 #4
0
        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)}}}");
        }
예제 #5
0
        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}");
        }