【问题标题】:LINQ - how to remove duplicate rows in tableLINQ - 如何删除表中的重复行
【发布时间】:2015-10-30 16:33:02
【问题描述】:

在某些过程之后,我想从表中删除重复项并提交更改,因此只保留单个值。

我有三个删除标准:

  • 姓名
  • 日期
  • 状态(始终为 1)

因此,如果有相同名称、相同日期和相同状态的记录...删除一条。不管是哪一个。

我有: dbContext.tbl_mytable

【问题讨论】:

  • 所以你使用的是Linq To SQL,对吧?表有主键吗?
  • 是的。我使用 Linq 到 SQL。表有主键。

标签: c# .net linq linq-to-sql


【解决方案1】:

既然您说的是删除记录,您需要先测试

因此,如果有相同名称、相同日期和相同状态的记录...删除一条。不管是哪一个。

我假设您要删除除一条以外的所有记录,即,如果您有三个具有相同详细信息的记录,则删除两条并保留一条。

如果是这样,您应该能够通过按 { Name, date, status} 分组然后选择每个组中除第一条记录之外的所有记录来识别重复项。

比如

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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多