Групповые операции в LINQ to SQL
LINQ to SQL не умеет оптизировать однотипные действия над несколькими сущностями, например, для удаления большого количества
записей по условию их придётся сначала выбрать отдельным запросом, пометить как удалённые с помощью методов DeleteOnSubmit() или
DeleteAllOnSubmit(), а при вызове SubmitChanges() будет сгенерировано столько SQL-запросов c DELETE, сколько было удаляемых
записей.
Один из вариантов, заодно, обходим ещё одно ограничение: невозможность передать в WHERE IN ... напрямую массив значений:
public static void DeleteGroup(List<int> listGoods)
{
using (SomeContext dataContext = UtilsLinq.GetContext())
{
string list = String.Join(",", (from i in listGoods select i.ToString()).ToArray<string>());
dataContext.ExecuteCommand(String.Format("DELETE FROM [dbo].[Goods] WHERE ([Id] IN ({0}))", list));
}
}
P.S. Случайно нашлось ещё одно решение.
