c# - 如何使用 LINQ 区分列表?

标签 c# linq distinct

我有一个 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/

相关文章:

c# - 如何在 Google Or-Tools 中限制路线持续时间?

c# - 如何使用 LINQ 使用不同的分隔符将字符串拆分两次?

c# - 使用 LINQ 而不是使用 for-each 循环

php - MySQL 从表中选择不同的值,按具有这些不同值的行数排序

c# - 我们是否应该使用单例模式来创建连接?

c# - 创建自定义异步函数(不调用另一个 .net 异步方法)

MYSQL - 选择所有行,但在一列上使用 Distinct

list - Scala使用toSet.toList与distinct

c# - 以编程方式将用户名和密码发布到登录页面

c# - 具有多输入和多字段的 LINQ