Филипп говорил о последовательности вещей - хотя вам даже не нужен вызов Any()
. В конце концов, если нет никаких изменений, цикл просто ничего не сделает.
Вы действительно хотите отправлять изменения на каждой итерации? Вероятно, было бы разумнее сделать это один раз в конце. Кроме того, вы можете использовать DateTime.AddMinutes
, чтобы упростить начальные 10 минут назад, и если вы фильтруете только по предложению Where
, я бы использовал точечную запись.
После всех этих изменений (и повышения полезности имен переменных) код будет выглядеть следующим образом:
DateTime tenMinutesAgo = DateTime.Now.AddMinutes(-10);
var entriesToDelete = cpuInfo.Where(entry => entry.DateTime <= tenMinutesAgo);
foreach (var entry in entriesToDelete)
{
localDB.TblCPUInfo.DeleteOnSubmit(entry);
}
localDB.SubmitChanges();
Теперь, почему <= не работает для вас ... возможно ли, что вам нужно время UTC вместо местного времени? Например: </p>
DateTime tenMinutesAgo = DateTime.UtcNow.AddMinutes(-10);
Если это все еще не работает, я предлагаю вам взглянуть на сгенерированный запрос и поиграть с ним в инструменте SQL (например, Enterprise Manager или SQL Server Management Studio), чтобы выяснить, почему он не возвращает никаких результатов.