public List <Recipe> GetByOr(FilterValue[] filters) { var filterDefinitions = new List <FilterDefinition <Recipe> >(); for (int i = 0; i < filters.Length; i++) { switch (filters[i].FilterType) { case FilterType.IN: filterDefinitions.Add(MongoDatabase.FilterDefinitionIn <Recipe>(filters[i].ColumnName, filters[i].Values)); break; case FilterType.EQUAL: filterDefinitions.Add(MongoDatabase.FilterDefinitionEqual <Recipe>(filters[i].ColumnName, filters[i].Values.ElementAt(0))); break; case FilterType.LIKE: filterDefinitions.AddRange(MongoDatabase.FilterDefinitionLike <Recipe>(filters[i].ColumnName, filters[i].Values)); break; case FilterType.RANGE: filterDefinitions.Add(MongoDatabase.FilterDefinitionRange <Recipe, string>(filters[i].ColumnName, filters[i].Values.ElementAt(0), filters[i].Values.ElementAt(1))); break; case FilterType.LESS_THAN_EQUAL: filterDefinitions.Add(MongoDatabase.FilterDefinitionLessThanOrEqual <Recipe>(filters[i].ColumnName, filters[i].Values.ElementAt(0))); break; case FilterType.GREATER_THAN_EQUAL: filterDefinitions.Add(MongoDatabase.FilterDefinitionGreaterThanOrEqual <Recipe>(filters[i].ColumnName, filters[i].Values.ElementAt(0))); break; } } var recs = _db.LoadRecordsOr(CollectionMappings.RecipeCollectionName, filterDefinitions.ToArray()); return(recs.ToList()); }