Как мне симулировать «В» с помощью Linq2Sql - PullRequest
3 голосов
/ 15 апреля 2010

Я часто оказываюсь со списком отключенных объектов или ключей 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 по списку для выбора каждого элемента по одному?

1 Ответ

3 голосов
/ 15 апреля 2010

Можете ли вы сделать:

var items = _Db.Items.Where(i => idsToValidate.Contains(i.Key));

Это сработает или я что-то упустил?

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