2011-07-21 34 views
0

我正在使用以下代碼來更新活動的UserSession列。如果ExpiryTimeStamp小於當前日期,則以下代碼返回記錄。 然後它將表中的返回的記錄更新爲UserSession列爲0。 。現在我想,如果有100個記錄被返回,那麼這些應該一次更新,而不是使用FoREach。在Linq中是否可行如何使用Linq更新表中的行數

CacheDataDataContext db = new CacheDataDataContext(); 
       var data = (from p in db.Activities 
          where p.ExpiryTimeStamp < DateTime.Now 
          select p).ToList(); 
       data.ForEach(ta => ta.UserSession = "0"); 
       db.SubmitChanges(); 

回答

0

簡而言之,no:Linq-2-sql不會立即執行批量更新。

(我不知道你的foreach會像你寫 - 我不這麼認爲 - 但這是相似的,將工作)

foreach (var x in data) 
{x.UserSession = "0";} 
db.SubmitChanges() 

,但即使你不喜歡這樣,Linq- 2-sql會將每條記錄的更新語句發送到數據庫。因此,以您返回的100條記錄爲例,您將獲得100條發送到數據庫的單個更新。