【发布时间】:2010-04-15 04:39:48
【问题描述】:
我经常发现自己有一个断开连接的 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 以一次选择每个项目更有效?
【问题讨论】:
标签: c# linq-to-sql