gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:04:24 24 4
gpt4 key购买 nike

我有以下内容:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com