2015-08-13 33 views
2

我使用MongoDb的C#驱动程序。我有一个非常简单的“查找”查询:MongoDb C#驱动程序在DateTime比较中抛出序列化错误

var cursor = PortalContext.Users.Find(user => DateTime.Now > user.UpdatedDate); 
return cursor.ToListAsync(); 

抛出一个异常:

Message: "An error has occurred." 
ExceptionMessage: "Unsupported filter: (8/13/2015 12:03:44 PM > Serialization(UpdatedDate))." 
ExceptionType: "System.ArgumentException" 
StackTrace: " at MongoDB.Driver.Linq.Translators.PredicateTranslator.BuildFilter(Expression expression) at ... 
+0

您可以尝试将'user.UpdatedDate'设置为变量'updatedDate'并在'Find'表达式中使用它? –

+0

我的意思是,'PortalContext.Users.Find(user => DateTime.Now> updatedDate)' –

回答

2

尝试重新安排你的Find使得恒定(DateTime.Now)是在右手边,运作的?

var cursor = PortalContext.Users.Find(user => user.UpdatedDate < DateTime.Now); 
return cursor.ToListAsync(); 

有在1.x版本的驱动程序(CSHARP-431)哪里哪里不变的是在左侧的司机没有处理这种情况的错误。这个问题在很久以前就已经解决了,但这个问题可能是一个回归。

+0

是的,这有效! ... 谢谢! –

相关问题