1

我有一些看起来像这样的数据:

Environment | Time
"1" | 2021/09/01
"2" | 2021/09/02
"1" | 2021/09/03
"3" | 2021/09/01
"1" | 2021/09/03
"1" | 2021/09/04
"3" | 2021/12/01
"2" | 2021/11/02

我需要找到每个环境的最后一条记录(按时间),所以我写道:

var lastPerEnvironment = data
    .GroupBy(prp => prp.Environment)
    .Select(prp => prp.OrderByDescending(o => o.Time).First());

当然它可以按预期工作,但我想有一种更简单的方法来编写它,并且可能也更有效,例如使用像 MoreLINQ 这样的召集库(或另一个好知道的库?),并进行某种分区。

我不需要 Linq 到 SQL 的转换(但如果建议的解决方案也支持它会很好),只需要 Linq 到对象。

感谢您的建议

4

1 回答 1

1

您可以参考此 SO 响应:优化您prp.OrderByDescending(o => o.Time).First()的 by MaxBy(o => o.Date);在 .NET 6 中为原生,但在MoreLINQ中也可用)

于 2022-01-11T11:59:19.583 回答