//Preparado para utilizar todas as condições ("keysAndValues") com LessThan, GreaterThan e Matches. Por enquanto utilizando somente chamada com Equals. public List <IMongoQuery> GetQueries(IDictionary <string, string> keysAndValues, MongoDBQueryCondition eQuery) { var queries = new List <IMongoQuery>(); foreach (var key in keysAndValues.Keys) { switch (eQuery) { case MongoDBQueryCondition.eQueryEQ: queries.Add(Query.EQ(key, keysAndValues[key])); break; case MongoDBQueryCondition.eQueryLT: queries.Add(Query.LT(key, keysAndValues[key])); break; case MongoDBQueryCondition.eQueryGT: queries.Add(Query.GT(key, keysAndValues[key])); break; case MongoDBQueryCondition.eQueryMatches: queries.Add(Query.Matches(key, new BsonRegularExpression(keysAndValues[key], "i"))); break; default: continue; } } return(queries); }
protected virtual IEnumerable <T> InternalSearch <Tkey>(IList <IMongoQuery> search, int page, int pagesize, out long foundedRecords, Func <T, Tkey> orderByClause, bool orderByDescending, MongoDBQueryCondition queryCondition) { var query = queryCondition.Equals(MongoDBQueryCondition.eQueryOr) ? Query.Or(search) : Query.And(search); var totallist = MongoDBColletion.Find(query).AsQueryable(); foundedRecords = totallist.ToList().Count(); return(OrderByQuery <Tkey>(pagesize, page, orderByClause, orderByDescending, totallist)); }