データベースにいくつかの列を持つテーブルがあります。リポジトリクラスのこのテーブルからいくつかのレコードのリストを取得します。したがって、次のようになります。
ここで、次のような特別な列(ここではコード列)に同じ値を持つレコードを削除したいと思います。
つまり、同じコード列の値を持つレコードを1つだけにしたいということです。Entity Frameworkでそれを行うにはどうすればよいですか?
データベースにいくつかの列を持つテーブルがあります。リポジトリクラスのこのテーブルからいくつかのレコードのリストを取得します。したがって、次のようになります。
ここで、次のような特別な列(ここではコード列)に同じ値を持つレコードを削除したいと思います。
つまり、同じコード列の値を持つレコードを1つだけにしたいということです。Entity Frameworkでそれを行うにはどうすればよいですか?
列でグループ化し、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();
2 つのテーブルがTable1
あり、table2
で同じ番号を持つtable2
すべてのレコードを削除したいとします。これはあなたの要件ですtable1
code
1.最初に、テーブル2のコード列のすべての値を取得する必要があります
var x = db.table2.Select(p => p.code);
次に、それらのコードのレコードを削除した後、それを table1 と比較する必要があります。そのためには、以下のコードを記述する必要があります。
foreach (var item in x) { var y = db.table1.Where(p => p.code== item).FirstOrDefault(); if (y != null) { db.table1.DeleteObject(y); デシベル。SaveChanges(); } そうしないと { } }