我有一个 Event
类,它有两个属性:“ID”和“ExpirationTime”。
我有一个包含许多事件的列表,其中一些具有相同的 ID。
我想创建一个高效的 LINQ 查询,它将通过 ID 区分事件,并为每个 ID 保留具有最小 ExpirationTime 的事件。
谢谢!
最佳答案
分组很简单,但是用标准的 LINQ to Objects 做一个高效的“MinBy”有点乱:
var lowestByID = items.GroupBy(x => x.ID)
.Select(group => group.Aggregate((best, next) =>
best.ExpirationTime < next.ExpirationTime
? best : next));
MinBy
更干净运算符,例如 MoreLinq 提供的运算符.
var lowestByID = items.GroupBy(x => x.ID)
.Select(group => group.MinBy(x => x.ExpirationTime));
关于c# - 如何使用 LINQ 区分列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4947031/