我使用以下代码更新活动的UserSession列。如果ExpiryTimeStamp小于当前日期,则以下代码返回记录。 然后将表中返回的recods的UserSession列更新为0。 。现在我希望如果返回100条记录,那么这些记录应该一次更新而不是使用FoREach。它在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 :(得分:0)
简而言之,不:Linq-2-sql不会开箱即用批量更新。
(我不确定你的foreach会像你写的一样工作 - 我不这么认为 - 但这是相似的并且会起作用)
foreach (var x in data)
{x.UserSession = "0";}
db.SubmitChanges()
但是,即使你这样做,Linq-2-sql也会将每条记录的更新声明发送到数据库。因此,通过返回100条记录的示例,您将获得100个单独的更新发送到数据库。