2015-10-30 39 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();