2010-04-14 55 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