我有一個DB,其中包含幾個字段。我想刪除基於一個字段(「完整」)的重複 - 即如果有多個版本,我應該採取任何/第一個,並丟棄其餘的...如何從SQLite數據庫刪除重複 - 使用ENtity和LINQ
到目前爲止,我可以 - 所有事情都會引發某種錯誤。
這是我的一個輪胎。不幸的是,最後在distinctList中選擇了一個錯誤。
using (var context = new JITBModel())
{
var allList = context.BackupEvents.Select(i => i.Id).ToList();
var distinctList = context.BackupEvents
.GroupBy(x => x.Full)
.Select(i => i.ToList())
.Where(c => c.Count > 1)
.Select(t => t[0].Id).ToList();
var dups = allList.Except(distinctList);
context.BackupEvents.RemoveRange(from e in context.BackupEvents
where dups.Contains(e.Id)
select e);
context.SaveChanges();
}
此外,似乎無法在選擇查詢中選擇.First()。
UPDATE:現在我實現了一個基於答案here簡單ExecuteSqlCommand。
string com = @"DELETE FROM BackupEvents
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM BackupEvents
GROUP BY full)";
context.Database.ExecuteSqlCommand(com);
如果有人知道如何與實體/ LINQ做 - 讓我知道:-)
什麼是異常消息說? – mm8
@ mm8是否有一種通用的方法來刪除SQLite中的重複項?如果是這樣,我只會使用字符串並執行一個命令。 –