Ограничение времени с LINQ - PullRequest
0 голосов
/ 20 декабря 2010

Мне трудно ограничить время в выражении LINQ.Я все еще довольно новичок с LINQ.SQL-запрос, который я хочу эмулировать, выглядит примерно так:

SELECT ID, Token, StartTime 
FROM Tokens 
WHERE Token = '050' 
AND StartTime > DATEADD(MI, -30, CURRENT_TIMESTAMP)

Этот оператор SQL получает только строки, в которых время в столбце StartTime меньше 30 минут от текущего времени.Как бы я сделал это с LINQ?Пока что мое лучшее предположение -

DateTime cutoff = DateTime.Now - new TimeSpan(0, 30, 0);
IEnumerable<Tokens> token = dataContext.Tokens.Where(row => row.Token == "050" && 
                                                            row.StartTime > cutoff);

Но, похоже, это не работает.Любой совет?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2010
row.Token == '5'

Это прыгает на меня.Остерегайтесь использования строкового литерального синтаксиса sql в C #, поскольку он указывает на символ, а не на строку.

0 голосов
/ 20 декабря 2010

Вы можете добавить 30 дней к StartTime токена и сравнить его с текущей датой. Вам также следует сравнить текст токена как строку (двойные кавычки), так как это может быть тип VARCHAR2.

var token = dataContext.Tokens.Where(r => 
  r.Token == "5" && 
  r.StartTime.AddDays(30).Date >= DateTime.Now.Date
);

Редактировать: вероятно, вы хотите показать последние 30 дней работы, для этого нужно округлить дату и время до даты - изменили код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...