Есть ли какой-нибудь умный способ сделать это?
Если вы используете Linq2Nhibernate, вам действительно кажется, что вам действительно нужно полагаться на HQL или тому подобное, чтобы выполнять несколько удалений из базы данных (без загрузки и удаления одного за другим)?
В Linq2Sql тоже вроде нет? Я просто хочу что-нибудь, что умеет:
DELETE FROM Accounts WHERE amount < 1000
Есть идеи?





Короткий ответ: вы не можете.
Вы можете сделать что-то вроде:
var q = from account in dataContext.Accounts
where account.amount < 1000
select account;
dataContext.DeleteAllOnSubmit(q);
Но поскольку фреймворк должен отслеживать проблемы параллелизма, он всегда будет выполнять отдельные удаления (поэтому, если у вас есть 500 строк, которые будут удалены, он отправит 500 операторов удаления)
Для более длинной версии и решения см .: http://www.aneyfamily.com/terryandann/post/2008/04/Batch-Updates-and-Deletes-with-LINQ-to-SQL.aspx