LINQ - 如何删除 table 中的重复行
LINQ - how to remove duplicate rows in table
在某些过程之后,我想从 table 中删除重复项并提交更改,因此只保留单个值。
我有三个删除标准:
- 姓名
- 日期
- 状态(始终为 1)
所以如果有相同名称、相同日期和相同状态的记录...删除一个。哪一个都无所谓。
我有:
dbContext.tbl_mytable
既然你说的是删除条记录,你需要先测试。
So if there are records with same Name, and same date and same status... remove one. Does not matter which one.
我假设您想删除除一条以外的所有记录,即,如果您有三条详细信息相同的记录,则删除两条并留下一条。
如果是这样,您应该能够通过按 { 姓名、日期、状态} 分组然后选择每组中除第一条记录以外的所有记录来识别重复项。
比如
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();
在某些过程之后,我想从 table 中删除重复项并提交更改,因此只保留单个值。
我有三个删除标准:
- 姓名
- 日期
- 状态(始终为 1)
所以如果有相同名称、相同日期和相同状态的记录...删除一个。哪一个都无所谓。
我有: dbContext.tbl_mytable
既然你说的是删除条记录,你需要先测试。
So if there are records with same Name, and same date and same status... remove one. Does not matter which one.
我假设您想删除除一条以外的所有记录,即,如果您有三条详细信息相同的记录,则删除两条并留下一条。
如果是这样,您应该能够通过按 { 姓名、日期、状态} 分组然后选择每组中除第一条记录以外的所有记录来识别重复项。
比如
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();