2015-10-30 40 views
-2

一定proccess后,我婉删除从表中重复并提交更改,所以只有单值保持。LINQ - 如何去除重复行的表

我有去除三个标准:

  • 名称
  • 日期
  • 状态(始终为1)

因此,如果有同名的记录,以及相同的日期和相同的状态...删除一个。哪一个并不重要。

我: dbContext.tbl_mytable

+0

所以,你正在使用'Linq到SQL',对不对?表格是否有主键? – qxg

+0

是的。我使用Linq到SQL。表具有主键。 –

回答

1

既然你是在谈论删除记录,你需要测试这首。

所以,如果有记录具有相同的名称,相同的日期和相同的状态...删除一个。哪一个并不重要。

我假设你想除去一个,即,如果你有三个记录具有相同的细节,你删除两个并留下一个。

如果是这样,你应该能够通过{名称,日期,状态}分组,然后选择以外的所有各组中的第一个记录来识别重复。

即像

var duplicates = (from r in dbContext.tbl_mytable 
        group r by new { r.Name, r.date, r.status} into results 
        select results.Skip(1) 
       ).SelectMany(a=>a); 

dbContext.tbl_mytable.DeleteAllOnSubmit(duplicates); 
dbContext.SubmitChanges();