Я пытаюсь читать из коллекции MongoDB с Date фильтром (только дата, время должно быть проигнорировано):Невозможно определить информацию о сериализации для * выражение * с помощью .Date
var filterDefinition = Builders<SomeClass>.Filter.Eq(p => p.SomeDateTimeProperty.Date, DateTime.Now.Date);
using (var cursor = await _someCollection.FindAsync(filterDefinition))
{ ... }
SomeClass
и SomeDateTimeProperty
свойство выглядеть следующим образом:
[BsonIgnoreExtraElements]
[Serializable]
public class ReportConfiguration
{
...
public DateTime SomeDateTimeProperty { get; set; }
...
}
код бросает InvalidOperationException
при попытке .FindAsync()
:
Исключение типа «System.InvalidOperationException» произошло в MongoDB.Driver.dll, но не был обработан в пользовательском коде Дополнительная информация: Невозможно определить информацию о сериализации при р = > p.SomeDateTimeProperty.Date
Все работает, если я удаляю .Date часть в фильтре (p.SomeDateTimeProperty.Date, DateTime.Now.Date), но мне нужно сравнение yyyy \ mm \ dd, независимо от hh \ mm.
StackTrace говорит:
at MongoDB.Driver.ExpressionFieldDefinition`2.Render(IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry)
at MongoDB.Driver.SimpleFilterDefinition`2.Render(IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry)
at MongoDB.Driver.MongoCollectionImpl`1.CreateFindOperation[TProjection](FilterDefinition`1 filter, FindOptions`2 options)
at MongoDB.Driver.MongoCollectionImpl`1.FindAsync[TProjection](FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)
at MongoDB.Driver.IMongoCollectionExtensions.FindAsync[TDocument](IMongoCollection`1 collection, FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)
at [...]
Что может быть проблема?
Вы пробовали это без части. – Mahdi
Да, удаление части .Date предотвращает исключение, я добавил это разъяснение к вопросу - спасибо! –