2011-07-21 32 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条发送到数据库的单个更新。