名前と優先度の2つの列を持つテーブルがあります。現在のデータを(A、1)(B、2)(C、3)(D、4)としましょう。SQL Serverテーブルの2つの値を交換します。
私はDから優先度を2に更新し、Bの優先度を4に設定します。 B.私はこれをどのようにするのですか?私のプロジェクトはEntityフレームワークを使用します。これは
public void Swap(InputObject input)
{
NamePriority prio = context.NamePriorities.Where(w => w.Name == input.Name.FirstOrDefault();
NamePriority prioToSwap = context.NamePriorities.Where(w.Priority == input.Priority).FirstOrDefault();
prioToSwap.Priority = prio.Priority;
context.SaveChanges();
prio.Priority = input.Priority;
context.SaveChanges();
}
は、LINQのラムダ式か何かを使っているようにこれを行うには単純やきれいな方法がありますが、私は現在やっている方法ですか?
変更を2回保存する必要はありません。データベースから再度取得する場合の値は反映されません。あなたが達成しようとしているのは、通常のスワップではありませんか? int a = 3、int b = 2、int temp = 0と同じです。 temp = a; a = b; b = tmp? – Zinov