私はいくつかのフィールドを含むDBを持っています。 1つのフィールド( "フル")に基づいて重複を削除したい - つまり、複数のバージョンがある場合、それらのどれかを最初に取って残りを破棄する必要があります...SQLite DBから重複を削除する方法 - ENtityとLINQを使用して
これまでのところすべてが何らかのエラーを投げる。
これは私のタイヤの一つです。残念ながら、distinctListの最後のSelectはエラーを投げます。
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を実装しました。誰がエンティティ/ LINQでそれを行う方法を知っている場合は
string com = @"DELETE FROM BackupEvents
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM BackupEvents
GROUP BY full)";
context.Database.ExecuteSqlCommand(com);
- 。代わりトンの
例外メッセージには何が表示されますか? – mm8
@ mm8 SQLiteで重複を削除する一般的な方法はありますか?もしそうなら、私は単に文字列を使用してコマンドを実行します。 –