如何使用筛选器在 C# 中删除数据表中的行

本文关键字:删除 数据表 何使用 筛选 | 更新日期: 2023-09-27 17:56:28

>我有一个包含一些行的DataTable,其中一个是ID(字符串)和一个System.DateTime。其他行现在不重要了。

现在我想删除所有具有相同 ID 的行,这些行的日期时间较旧,为最新。

这可能吗?

这里有一个例子

  • ID:123 日期:24.12.2010 ...
  • ID:123 日期:23.12.2010 ...
  • ID:123 日期:22.12.2010 ...

在此之后,我只想:

  • ID:123 日期:24.12.2010 ...

如何使用筛选器在 C# 中删除数据表中的行

下一步试试

public void DeleteOldById(DataTable table, int id)
{
      var rows = table.Rows.Cast<DataRow>().Where(x => (int)x["ID"] == id);
      DateTime specifyDate = rows.Max(x => (DateTime)x["Date"])
      rows.Where(x =>(DateTime)x["Date"] < specifyDate).ToList().
           ForEach(x => x.Delete());
}

public void DeleteAllOldRows(DataTable table)
{
     var ids = table.Rows.Cast<DataRow>().Select(x => (int)x["ID"]).Distinct();
     foreach(int id in ids)
        DeleteOldById(table,id);
}