2016-06-01 5 views
3

MongoDB DALクラスにメソッドを設定しました。MongoDB C#なぜIQueryableでDateTime.Dateを使用できないのですか?

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); 
} 

私はしかし

var result = Retrieve(a => a.SomeDateProperty.Date >= startDate && a.SomeDateProperty.Date <= endDate); 

、私がしようとするたびのようなシンプルな何かをしたい、私はエラーが述べ得る:

'System.InvalidOperationException' 種類の例外MongoDB.Driver.dllで発生しました ユーザーコードで処理されませんでした。ユーザーコードで処理されませんでした。

追加情報:{document} {SomeDateProperty} .Dateは に対応していません。

公式のC#ドライバのバージョン2.2.4.26を使用しています。

日付だけを照会する方法はありますか?私はDbFunctions.Truncateの使用についての記事を見てきましたが、これはEntityFrameworkライブラリにあります。

答えて

0

私はDateを使用して同じ問題を抱えていたし、私が使用:

アイデアは、2つの境界(DateTime.DateDateTimeですが、0時間、0分...第二に0時間にも次の日であるが、使用することです0分...)。

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

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

それは私のためにうまくいきます。

関連する問題