0

データベースにいくつかの列を持つテーブルがあります。リポジトリクラスのこのテーブルからいくつかのレコードのリストを取得します。したがって、次のようになります。

ここに画像の説明を入力してください

ここで、次のような特別な列(ここではコード列)に同じ値を持つレコードを削除したいと思います。

ここに画像の説明を入力してください

つまり、同じコード列の値を持つレコードを1つだけにしたいということです。Entity Frameworkでそれを行うにはどうすればよいですか?

4

2 に答える 2

0

列でグループ化し、Code各グループの最初のレコードをスキップして、残りを削除します。

var query = db.Records.GroupBy(r => r.Code)
              .Select(grouping => grouping.OrderBy(ent => ent.EntityId).Skip(1));

foreach (var element in query.SelectMany (q => q))
{
    db.Records.Remove(element);
}

db.SaveChanges();
于 2013-03-05T09:46:46.483 に答える
0

2 つのテーブルがTable1あり、table2 で同じ番号を持つtable2すべてのレコードを削除したいとします。これはあなたの要件ですtable1code

1.最初に、テーブル2のコード列のすべての値を取得する必要があります

  1. var x = db.table2.Select(p => p.code); 次に、それらのコードのレコードを削除した後、それを table1 と比較する必要があります。
  2. そのためには、以下のコードを記述する必要があります。

    foreach (var item in x) { var y = db.table1.Where(p => p.code== item).FirstOrDefault(); if (y != null) { db.table1.DeleteObject(y); デシベル。SaveChanges(); } そうしないと { } }

于 2013-03-05T09:22:40.103 に答える