Я часто оказываюсь со списком отключенных объектов или ключей Linq2Sql, которые мне нужно повторно выбрать из контекста данных Linq2Sql для обновления или удаления в базе данных.Если бы это был SQL, я бы использовал IN
в предложении SQL WHERE
, но я застрял с тем, что делать в Linq2Sql.Вот пример того, что я хотел бы написать:
public void MarkValidated(IList<int> idsToValidate)
{
using(_Db.NewSession()) // Instatiates new DataContext
{
// ThatAreIn <- this is where I am stuck
var items = _Db.Items.ThatAreIn(idsToValidate).ToList();
foreach(var item in items)
item.Validated = DateTime.Now;
_Db.SubmitChanges();
} // Disposes of DataContext
}
Или:
public void DeleteItems(IList<int> idsToDelete)
{
using(_Db.NewSession()) // Instatiates new DataContext
{
// ThatAreIn <- this is where I am stuck
var items = _Db.Items.ThatAreIn(idsToValidate);
_Db.Items.DeleteAllOnSubmit(items);
_Db.SubmitChanges();
} // Disposes of DataContext
}
Могу ли я сделать это за одну поездку в базу данных?Если так, то как?Можно ли отправить все эти целые числа в базу данных в виде списка параметров, и это более эффективно, чем выполнение foreach по списку для выбора каждого элемента по одному?