如何删除Entity Framework中列中具有相同值的记录?

时间:2013-03-05 05:37:52

标签: entity-framework

我在数据库中有一个表有一些列。我在我的存储库类中得到了这个表中的一些记录的列表。所以我会有这样的事情:

enter image description here

现在我要删除特殊列中的相同值的记录(此处位于“代码”列中),如下所示:

enter image description here

我的意思是我想只拥有一个具有相同Code列值的记录。 我怎样才能在Entity Framework中做到这一点?

2 个答案:

答案 0 :(得分:0)

让您有两个表Table1table2,并且您想要删除所有记录 来自table1的{​​2}在表2中具有相同的code个数字。 这是您的要求

1.首先,您必须获取table2的所有代码列值

  1. var x = db.table2.Select(p => p.code);然后你必须用table1扼杀它 之后你删除了那些代码的记录是相同的。
  2. 为此你必须在下面写一段代码。

    foreach(x中的var项) { var y = db.table1.Where(p => p.code == item).FirstOrDefault(); if(y!= null) { db.table1.DeleteObject(Y); db.SaveChanges(); } 其他 { } }

答案 1 :(得分: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();