如何使用Linq更新表中的多个行

时间:2011-07-21 04:49:03

标签: linq-to-sql

我使用以下代码更新活动的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();

1 个答案:

答案 0 :(得分:0)

简而言之,不:Linq-2-sql不会开箱即用批量更新。

(我不确定你的foreach会像你写的一样工作 - 我不这么认为 - 但这是相似的并且会起作用)

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

但是,即使你这样做,Linq-2-sql也会将每条记录的更新声明发送到数据库。因此,通过返回100条记录的示例,您将获得100个单独的更新发送到数据库。