'C# MongoDb Driver Convert string to DateTime and for Filter Builder
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;
}
Enrolment Date is Saved as a string public string EnrollmentDate{ get; set; }, I need to Filter Docs within a Set Date Range, But How do i Compare this? i need to filter like this,
I get System.InvalidOperationException: Parse({document}{EnrollmentDate}) is not supported. Error in SubFilter Line
Solution 1:[1]
You have problem here when you want to do DateTime.Parse()
Can you post format of your string EnrollmentDate? And your variable date , is it only Date or DateTime?
This one maybe can help you here
Also, try to use
var subfilter = builder.Gte(x=>x.Y, Z)
Solution 2:[2]
I think you need to achieve with MongoDB query as below:
{
"$expr": {
"$gte": [
{ "$toDate": "$EnrollmentDate" },
date
]
}
}
While I think it is not achievable with MongoDB .Net Driver LINQ syntax, you convert the query as BsonDocument:
var subfilter = new BsonDocument("$expr",
new BsonDocument("$gte",
new BsonArray {
new BsonDocument("$toDate", "$EnrollmentDate"),
date
}
)
);
filter &= subfilter;
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 |
