如何通过Linq2Sql模拟“In”操作

3

我经常发现自己有一些不相关的Linq2Sql对象或键需要重新从Linq2Sql数据上下文中选择,以便在数据库中进行更新或删除。如果这是SQL,我会在SQL WHERE子句中使用IN,但是在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

Can you do:

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

那样行吗?还是我漏了什么?

<拍额头>我知道了。</拍额头> - flipdoubt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接