У меня есть DataTable в памяти, который содержит два поля типа DateTime
, соответственно LastAction и LastHeartbeat, что означает последний раз, когда объект отправлял сообщение журнала активности, и последний раз, когда объект отправлял биение ( ") сообщение в журнале.
Я создаю метод для запроса таблицы данных по различным критериям, включая «максимальное время бездействия» объекта в системе. Это максимальное время ожидания предназначено для учета как LastAction, так и LastHeartbeat, поэтому запрос будет напоминать что-то вроде (LastAction > Now-timeout || LastHeartbeat > Now-timeout)
, и пока все в порядке. Значение времени ожидания выражается в целых секундах.
В настоящее время я делаю это в две строки
DateTime lastActivity = DateTime.UtcNow.Subtract(TimeSpan.FromSeconds(maxinactivity));
filters.Add(string.Format("({0} >= {2} OR {1} >= {2}}", _colLastAction.ColumnName, _colLastHeartbeat.ColumnName, lastActivity.ToString(CultureInfo.InvariantCulture)));
где конечный результат будет выглядеть как (LastAction >= #...# OR LastHeartbeat >= #...#)
в зависимости от текущего времени выполнения запроса
Мой вопрос: можно ли вычесть дату из запроса ? Существуют ли операторы, чтобы я мог напрямую ввести тайм-аут внутри запроса? В SQL, по крайней мере с MySQL, я мог делать вычитание даты с помощью функции NOW (). Возможно ли это и в ADO.NET? Помните, что это таблица в оперативной памяти для автономного ADO.NET, поскольку данные никоим образом не предназначены для сохранения.
Спасибо