Exemplo n.º 1
0
            private ISingleOperator <TCandidate> CreateOperator <TSpecification>(Expecting expecting) where TSpecification : ISpecification <TCandidate>, new()
            {
                var candidateOperator = new SingleOperator(_candidate);

                candidateOperator.AddToGroup <TSpecification>(expecting);
                return(candidateOperator);
            }
Exemplo n.º 2
0
 private bool IsSeperator(char current)
 {
     return(SingleOperator.Contains(current));
 }
        /// <summary>
        /// Create an operation specific predicate
        /// </summary>
        /// <param name="name">Parameterized property name</param>
        /// <param name="value">Parameterized value</param>
        /// <param name="operator">Operator</param>
        /// <returns></returns>
        public static string Create(string name, string value, SingleOperator @operator)
        {
            string predicate;

            switch (@operator)
            {
            case SingleOperator.Equals:
                predicate = $"{name} == {value}";
                break;

            case SingleOperator.NotEquals:
                predicate = $"{name} != {value}";
                break;

            case SingleOperator.GreaterThan:
                predicate = $"{name} > {value}";
                break;

            case SingleOperator.GreaterThanOrEqualTo:
                predicate = $"{name} >= {value}";
                break;

            case SingleOperator.LessThan:
                predicate = $"{name} < {value}";
                break;

            case SingleOperator.LessThanOrEqualTo:
                predicate = $"{name} <= {value}";
                break;

            case SingleOperator.IsNull:
                predicate = $"{name} == {value}";
                break;

            case SingleOperator.IsNotNull:
                predicate = $"{name} != {value}";
                break;

            case SingleOperator.StartsWith:
                predicate = $"({name} == null ? string.Empty : {name}.ToString()).StartsWith({value})";
                break;

            case SingleOperator.EndsWith:
                predicate = $"({name} == null ? string.Empty : {name}.ToString()).EndsWith({value})";
                break;

            case SingleOperator.Like:
                predicate = $"({name} == null ? string.Empty : {name}.ToString()).Contains({value})";
                break;

            case SingleOperator.DoesNotStartWith:
                predicate = $"!({name} == null ? string.Empty : {name}.ToString()).StartsWith({value})";
                break;

            case SingleOperator.DoesNotEndWith:
                predicate = $"!({name} == null ? string.Empty : {name}.ToString()).EndsWith({value})";
                break;

            case SingleOperator.NotLike:
                predicate = $"!({name} == null ? string.Empty : {name}.ToString()).Contains({value})";
                break;

            case SingleOperator.In:
                predicate = $"{value}.Contains({name})";
                break;

            case SingleOperator.NotIn:
                predicate = $"!{value}.Contains({name})";
                break;

            default:
                throw new ArgumentException($"'{@operator}' is not a valid operation.");
            }
            return(predicate);
        }