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 } }
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."); } }