public FieldFilter(string attributeName, FieldFilterOperator comparisonOperator, object comparisonValue)
        {
            ArgumentValidation.ValidateString(nameof(attributeName), attributeName);

            AttributeName   = attributeName;
            Operator        = comparisonOperator;
            ComparisonValue = comparisonValue;
        }
        private static string GetStringFromOperator(FieldFilterOperator oper)
        {
            switch (oper)
            {
            case FieldFilterOperator.OR:
                return("or");

            case FieldFilterOperator.AND:
                return("and");

            case FieldFilterOperator.NOT:
                return("not");

            default:
                return("or");     // default value
            }
        }
Beispiel #3
0
        private FilterDefinition <TEntity> CreateFilter(string attributeName, FieldFilterOperator comparisonOperator,
                                                        object value)
        {
            switch (comparisonOperator)
            {
            case FieldFilterOperator.Equals:
                return(Builders <TEntity> .Filter.Eq(attributeName, value));

            case FieldFilterOperator.NotEquals:
                return(Builders <TEntity> .Filter.Ne(attributeName, value));

            case FieldFilterOperator.In:
                return(Builders <TEntity> .Filter.In(attributeName, (IEnumerable <object>) value));

            case FieldFilterOperator.NotIn:
                return(Builders <TEntity> .Filter.Nin(attributeName, (IEnumerable <object>) value));

            case FieldFilterOperator.LessThan:
                return(Builders <TEntity> .Filter.Lt(attributeName, value));

            case FieldFilterOperator.LessEqualThan:
                return(Builders <TEntity> .Filter.Lte(attributeName, value));

            case FieldFilterOperator.GreaterThan:
                return(Builders <TEntity> .Filter.Gt(attributeName, value));

            case FieldFilterOperator.GreaterEqualThan:
                return(Builders <TEntity> .Filter.Gte(attributeName, value));

            case FieldFilterOperator.Like:
                return(Builders <TEntity> .Filter.Regex(attributeName,
                                                        new BsonRegularExpression(GetRegex(value?.ToString()), "i")));

            case FieldFilterOperator.MatchRegEx:
                return(Builders <TEntity> .Filter.Regex(attributeName,
                                                        new BsonRegularExpression(value?.ToString())));

            default:
                throw new NotImplementedException("Value is not implemented.");
            }
        }