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

han*_*ler 6 .net c# linq datatable

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

现在我想删除所有具有相同ID的行,这些行具有较旧的DateTime作为最新版本.

这可能吗?

这是一个例子

  • ID:123日期:2010年12月24日......
  • ID:123日期:2010年12月23日......
  • ID:123日期:2010年12月22日......

在此之后我只想要:

  • ID:123日期:2010年12月24日......

Ste*_*cya 7

尝试下一步

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);
}
Run Code Online (Sandbox Code Playgroud)