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

如何使用过滤器从C#中的数据表中删除行?,c#,.net,linq,datatable,C#,.net,Linq,Datatable,我有一个包含一些行的DataTable,其中一行是ID(字符串)和System.DateTime。 其他行现在不重要了 现在我想删除所有具有相同ID的行,这些行的DateTime较旧,而DateTime最新 这可能吗 这里有一个例子 ID:123日期:24.12.2010 ID:123日期:23.12.2010 ID:123日期:22.12.2010 在此之后,我只想: ID:123日期:24.12.2010 尝试下一步 public void DeleteOldById(DataTabl

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

现在我想删除所有具有相同ID的行,这些行的DateTime较旧,而DateTime最新

这可能吗

这里有一个例子

  • ID:123日期:24.12.2010
  • ID:123日期:23.12.2010
  • ID:123日期:22.12.2010
在此之后,我只想:

  • ID: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);
}
public void DeleteOldById(数据表,int-id)
{
var rows=table.rows.Cast()。其中(x=>(int)x[“ID”]==ID);
DateTime specifyDate=rows.Max(x=>(DateTime)x[“日期”])
其中(x=>(DateTime)x[“Date”]x.Delete());
}
公共void DeleteAllOldRows(数据表)
{
var ID=table.Rows.Cast().Select(x=>(int)x[“ID”]).Distinct();
foreach(id中的int-id)
DeleteOldById(表,id);
}

使用select方法不可能吗?在查看我的编辑之前,我不知道具体日期。您可以在执行query之前计算specifyDate现在第二件事是,您只得到一个max,但我有几个ID,并且在select语句之后每个ID应该只存在一次,直到最新的日期。所有这些都很好,但他没有得到specifyDate(将日期更改为时间)。我的定义如下:time.ColumnName=“time”;time.DataType=Type.GetType(“System.DateTime”);data.Columns.Add(时间);