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

发布于 2024-11-07 20:49:28 字数 321 浏览 0 评论 0原文

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

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

这可能吗?

这里有一个例子

  • ID:123 Date:24.12.2010 ...
  • ID:123 Date:23.12.2010 ...
  • ID:123 Date:22.12.2010 ...

之后我只想要:

  • ID:123 Date:24.12.2010 ...

i have a DataTable with some rows, one of it is a ID (a string) and a System.DateTime.
the other rows are not important now.

now i want to delete all the rows with the same ID that have an older DateTime as the newest.

is this possible?

here an example

  • ID:123 Date:24.12.2010 ...
  • ID:123 Date:23.12.2010 ...
  • ID:123 Date:22.12.2010 ...

after this i only want:

  • ID:123 Date:24.12.2010 ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

海拔太高太耀眼 2024-11-14 20:49:28

下一步尝试

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

Try next

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);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文