2010-04-14 57 views
3

我经常发现自己拥有一个断开连接的Linq2Sql对象或键的列表,我需要从Linq2Sql数据上下文中重新选择以更新或删除数据库。如果这是SQL,我会在SQL WHERE子句中使用IN,但我坚持要在Linq2Sql中做什么。下面是我想写些什么样本:如何使用Linq2Sql模拟“In”

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 
} 

我可以在一个访问数据库做?如果是这样,怎么样?是否有可能将所有这些ints作为参数列表发送到数据库,并且比在列表中逐个选择每个项目更有效?

回答

3

你可以这样做:

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

将这项工作还是我失去了一些东西?

+0

我知道。 flipdoubt 2010-04-14 21:01:27