c# - 如何只获取 DataTable 中具有相同 ID 的最新条目?

标签 c# datatable

我有以下内容:

DataTable table = new DataTable();
table.Columns.Add("id", typeof(string));
table.Columns.Add("date", typeof(DateTime));

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
DateTime date2 = new DateTime(2007, 3, 1, 7, 0, 0);
DateTime date3 = new DateTime(2006, 3, 1, 7, 0, 0);

table.Rows.Add("123", date1);
table.Rows.Add("123", date2);
table.Rows.Add("ABC", date3);

我想运行一个操作,删除所有与另一行具有相同 ID 的行,并只保留具有最新日期的行。

在开头的这个小例子中我有:

123 2008...
123 2007...
ABC 2006...

Action 之后应该是:

123 2008...
ABC 2006...

我怎样才能意识到这一点?

(这只是一个小例子,我的真实数据要大得多)

最佳答案

假设您不能直接在数据源过滤数据(=调整SQL查询),您可以使用以下代码删除行:

var multiDates = from dr in table.AsEnumerable()
                 group dr by dr.Field<string>("id") into grp
                 where grp.Count() > 1
                 select grp.OrderByDescending(gr => gr.Field<DateTime>("date"));

var toDelete = multiDates
    .SelectMany(rows => rows.Skip(1))
    .ToArray();

foreach (var row in toDelete)
    row.Delete();

table.AcceptChanges();

关于c# - 如何只获取 DataTable 中具有相同 ID 的最新条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173549/

相关文章:

c# - .NET - 什么是 "double pointer list"?

python - py-datatable 'in' 运算符?

c# - 为什么我的流不可读?

datatable - YUI 数据表宽度

javascript - 数据表未显示正确的值

sorting - com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter 中的 java.lang.NullPointerException

jquery - 获取选定的单元格元素数据表

c# - 如何在特定时间每天在 C# 中调用一个方法?

c# - 保持应用程序始终运行

c# - 如何在Y轴上每N个值显示标签?