var builder = Builders<ModelClass>.Filter;
var filter = builder.Where(x => x.Active);
if (fromDate.HasValue)
{
var date = fromDate.Value;
var subfilter = builder.Where(x =>DateTime.Parse(x.EnrollmentDate) >= date);
filter &= subfilter;
}
注冊日期保存為字串public string EnrollmentDate{ get; 放; },我需要在設定的日期范圍內過濾檔案,但我該如何比較呢?我需要像這樣過濾,
我得到System.InvalidOperationException: Parse({document}{EnrollmentDate}) is not supported。子過濾器行中的錯誤
uj5u.com熱心網友回復:
當你想做的時候你有問題DateTime.Parse()
你可以發布你的字串格式EnrollmentDate嗎?而你的變數date,是只有日期還是日期時間?
這個也許可以在這里幫助你
另外,嘗試使用
var subfilter = builder.Gte(x=>x.Y, Z)
uj5u.com熱心網友回復:
我認為您需要使用 MongoDB 查詢來實作如下:
{
"$expr": {
"$gte": [
{ "$toDate": "$EnrollmentDate" },
date
]
}
}
雖然我認為 MongoDB .Net Driver LINQ 語法無法實作,但您將查詢轉換為BsonDocument:
var subfilter = new BsonDocument("$expr",
new BsonDocument("$gte",
new BsonArray {
new BsonDocument("$toDate", "$EnrollmentDate"),
date
}
)
);
filter &= subfilter;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/440588.html
標籤:C# mongodb mongodb-.net-驱动程序
