У меня небольшая проблема с фильтрацией коллекции mongodb в поле enum. Я всегда получаю одинаковое количество предметов. Похоже, что фильтр в поле enum игнорируется.
Мой код:
//first create a filter with from and to date. This work correct
var filter = Builders<MessageItem>.Filter.Gte(x => x.CreateTimestamp, messageItemFilter.DateFrom);
filter &= Builders<MessageItem>.Filter.Lte(x => x.CreateTimestamp, messageItemFilter.DateTo);
// here i'm filtering with a string array to an enumfield
var messageTypeFilter = Builders<MessageItem>.Filter.Empty;
// if contains "" means te option all is selected. If all, we don't need the filter
if (Array.FindAll(messageItemFilter.MessageTypes, s => s.Equals("")).Length == 0)
{
foreach (var messgMessageType in messageItemFilter.MessageTypes)
{
messageTypeFilter |= Builders<MessageItem>.Filter.Eq(x => x.MessageType, Enum.Parse(typeof(MessageTypeEnum), messgMessageType));
}
filter = Builders<MessageItem>.Filter.And(filter, messageTypeFilter);
}
И в конце я добавляю фильтр в оператор поиска.
var messages = await rep.MongoCollection.Find(filter).ToListAsync();
Кто-нибудь знает, что я делаю не так?