2011-07-21 5 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

簡単に言えば、Linq-2-sqlは、そのままの状態でバッチ更新を行いません。

(私はあなたが書いたように、あなたのforeachが動作することを確認していない - しかし、これは似ていると動作します - 私はそうは思わない)、あなたはこのようにそれを行う場合でも、Linq-を

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

BUT 2-SQLは各レコードの更新ステートメントをデータベースに送信します。あなたの100のレコードのあなたの例では、100個の個別の更新がデータベースに送られます。

関連する問題