0

テーブル データを反映するページに CheckBoxList があるとします。ユーザーは、以前にチェックしたアイテムのチェックを外し、チェックされていないアイテムをチェックします。LINQ2EF を使用してデータベースを更新し、残りのレコードが新しく送信されたチェック済みアイテムと一致するようにしたいと考えています。

つまり、ページが送信されるString[]と、チェック済みの ID が取得されます。次に、データベースを次のように更新する必要があります。

  1. そこにあったが、現在 ID を持っていないレコードを削除する
  2. そこにはなかったが、ID がチェックされているレコードを追加する
  3. そこにあり、まだチェックされているレコードはそのままにしておきます。

問題を複雑にしているのは、送信された Id が文字列の配列になっているのに、データ オブジェクトの Id が int になっていることです。

4

1 に答える 1

0

ええと、あなたはコードを書きます。

var submittedAsInts = submittedAsString.Select(s => int.Parse(s));
var toAdd = submittedAsInts.Where(i => !existingEntity.SomeProperty.Any(p => p.Id == i));
var toDelete = existingEntity.SomeProperty.Where(p => !submittedAsInts.Contains(p.Id));
foreach (var delId in toDelete)
{
    var o = existingEntity.SomeProperty.Single(p => p.Id == delID);
    existingEntity.SomeProperty.Remove(o);
    Context.DeleteObject(o);
}
// similarly for insert.
于 2010-10-20T21:35:09.550 に答える