множественный фильтр с полем перечисления драйвера mongodb c# - PullRequest
0 голосов
/ 17 февраля 2020

У меня небольшая проблема с фильтрацией коллекции 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();

Кто-нибудь знает, что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...