数据库
首页 > 数据库> > 我如何使用Linq2Sql模拟“输入”

我如何使用Linq2Sql模拟“输入”

作者:互联网

我经常发现自己有一系列断开连接的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
}

我可以一次访问数据库吗?如果是这样,怎么办?是否可以将所有这些int作为参数列表发送到数据库,并且比对列表进行一次foreach一次选择每个项目更有效?

解决方法:

你可以做:

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

那行吗?还是我想念什么?

标签:linq-to-sql,c
来源: https://codeday.me/bug/20191210/2099468.html