MongoDB C#为什么不能将DateTime.Date与IQueryable一起使用?

时间:2016-06-01 20:16:47

标签: c# mongodb

我在MongoDB DAL类中设置了方法。

Message

我想做一些简单的事情,比如

public IQueryable<MyModel> Retrieve(Expression<Func<MyModel, bool>> expression) 
{
    if (!BsonClassMap.IsClassMapRegistered(typeof(MyModel)))
    {
        DoMapping();
    }

    var client = new MongoClient(MongoConnectionString);
    var database = client.GetDatabase("DatabaseName");
    var documents = database.GetCollection<MyModel>("MyModelTable");

    return documents.AsQueryable<MyModel>().Where(expression);
}

但是,每次尝试时,都会收到错误消息:

  

例外   在MongoDB.Driver.dll中输入'System.InvalidOperationException'   但未在用户代码中处理

     

其他信息:{document} {SomeDateProperty} .Date不是   支撑。

我正在使用官方C#驱动程序版本2.2.4.26。

有没有办法只查询日期?我见过有关使用DbFunctions.Truncate的帖子,但这是在EntityFramework库中,我想远离它。

1 个答案:

答案 0 :(得分:3)

使用Date我遇到了同样的问题:

想法是使用两个边框(DateTime.Date也是DateTime但是0小时0分钟......第二天也是0小时0分钟......)。< / p>

DateTime currentDayStart = DateTime.Now.Date;
DateTime currentDayEnds  = DateTime.Now.Date.AddDays(1);

var result = Retrieve(a => a.SomeDateProperty >= currentDayStart && a.SomeDateProperty < currentDayEnds);

它适用于我。