【发布时间】:2013-05-25 07:11:07
【问题描述】:
我有一个List<dynamic>,其中有 N 条 ID 相同但 ValidTo/ValidFrom 值不同的记录。
假设我有这些物品:
Id: 1, ValidFrom: 1/1/2012, ValidTo: 1/1/2015
Id: 1, ValidFrom: 1/1/2013, ValidTo: 1/1/2015.
Id: 2, ValidFrom: 6/1/2012, ValidTo: 1/1/2015
Id: 2, ValidFrom: 6/1/2013, ValidTo: 1/1/2015
Id: 3, ValidFrom: 12/1/2012, ValidTo: 1/1/2015
Id: 3, ValidFrom: 12/1/2013, ValidTo: 1/1/2015
鉴于此,我想从当前集合中删除旧记录(对于每个 ID,ValidFrom 日期最低的那个),或者只获取一个包含每个 ID 的新集合,但是ValidFrom 日期最长的那些。
所以,预期的输出是:
Id: 1, ValidFrom: 1/1/2013, ValidTo: 1/1/2015.
Id: 2, ValidFrom: 6/1/2012, ValidTo: 1/1/2015
Id: 3, ValidFrom: 12/1/2013, ValidTo: 1/1/2015
也就是说,在 ID 为 1 的两条记录中,ValidFrom 最低的一条被丢弃,对于 ID2 和 ID3,依此类推。
我认为这将通过分组来完成,我只是不确定如何。
感谢您的帮助。
【问题讨论】:
-
请给我们该列表的预期输出?
-
您不能使用 LINQ 删除,只能不返回这些值。
-
@bash.d 公平地说,这只是一个技术细节。
-
技术细节?它对 LINQ 的本质至关重要!
-
@newStackExchangeInstance 预期的输出是:
标签: c# linq linq-to-objects