У меня есть таблица со столбцом DateTime "TimeStamp" и столбцом int "TimeoutSeconds". Я хочу получить все записи из этой таблицы, где DateTime.Now - TimeStamp > TimeoutSeconds. В хранимой процедуре это было несложно использовать GetDate():
select * from Schema.TableName mp
where (GetDate() - mp.[Timestamp]) > mp.Timeout
Однако с Entity Framework, использующим синтаксис LINQ или Lambda, я не могу этого сделать, потому что кажется, что входная переменная Lambda (mp) не может использоваться как часть вычисления только как часть предиката, поэтому это не компилируется:
var records = context.TableName.Where(mp => (DateTime.Now - mp.TimeStamp) > mp.Timeout);
Это не компилируется.
Я не хочу извлекать всю таблицу, а затем выполнять фильтрацию в памяти и предпочел бы не использовать хранимую процедуру или Entity SQL. Каковы мои варианты здесь?