c# - 如何使用过滤器从 C# 中的 DataTable 中删除行?

标签 c# .net linq datatable

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

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

这可能吗?

举个例子

  • 编号:123 日期:24.12.2010 ...
  • 编号:123 日期:23.12.2010 ...
  • 编号:123 日期:22.12.2010 ...

在此之后我只想要:

  • 编号:123 日期:24.12.2010 ...

最佳答案

下一步试试

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

关于c# - 如何使用过滤器从 C# 中的 DataTable 中删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6018756/

相关文章:

c# - 拒绝访问 C# 中的文件

c# - 与在 Sql Server 上执行的 .NET 存储过程相关的开销是多少?

c# - 当数据库未启动但 SQL Server 已准备好连接时出现 SqlException

asp.net - 未将对象引用设置为构建网站上的对象实例

c# - 只返回计数大于 X 的对象

c# - 在 linq 的列表中列出 - 它是什么?

c# - 模拟 IJSRuntime 以进行 Blazor 组件单元测试

c# - 使用设计模式重构多个变量

c# - 使用反射通过对象递归并打印树

asp.net - Linq to DataSet - 处理空值