Как фильтровать по полю TimeSpan, хранящемуся как строку, используя драйвер mongodb c #? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть коллекция mongodb с полем, которое хранит время в строковом формате.В моем коде C # модель имеет свойство типа TimeStamp:

public TimeSpan StartTime { get; set; }

Мне нужен запрос, чтобы получить все документы, где StartTime больше, чем UtcNow.Что-то вроде:

var now = new TimeSpan(DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, DateTime.UtcNow.Second);
...
...
var docs = db.GetCollection<DocDataModel>("docs")
             .AsQueryable()
             .Where(e => e.StartTime > now)

Но я получаю исключение InvalidOperationException с сообщением: Где (({{document} {StartTime}> 12:04:52))) не поддерживается.

Есть лилюбой способ правильно написать этот запрос?

1 Ответ

0 голосов
/ 11 октября 2018

Преобразовать переменные StartTime и now в long, используя TimeSpan.Ticks

var now = new TimeSpan(DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, DateTime.UtcNow.Second).Ticks;
...
...
var docs = db.GetCollection<DocDataModel>("docs")
             .AsQueryable()
             .Where(e => e.StartTime.Ticks > now)
...