我有一个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中的重复项?如果是这样,我只会使用字符串并执行一个命令。 –