我有一个名为 HourList 的集合,它由 Hour 对象组成。 Hour 的两个属性是 EmployeeId 和 Hours。员工打卡打卡并创建小时记录。因此,在一周结束时,我收到了来 self 们 DAO 的多名员工的多个 Hour 对象的 HourList。要求制作一份报告,其中仅显示总时数超过给定阈值的员工。
示例:一个简单扁平化的 HourList
Id | Hours ---------- 1 | 4.5 2 | 6.0 3 | 9.9 1 | 5.5 2 | 2.5
阈值是 10。在这种情况下,我只想要 Id 1 的小时记录,因为他的总小时数超过 10。
我知道我可以通过创建一个新的 DAO 方法来处理这个问题,当我返回初始的 HourList 时。我也可以使用 foreach 语句非常低效地执行此操作。不过,我正在尝试使用 Linq 变得更好,并且想看看有什么可能。提前感谢您的帮助。
最佳答案
var filtered = HourList.GroupBy(h => h.id)
.Select(g => new { Id = g.Key,
Hours = g.Sum(h => h.Hours)
})
.Where(h => h.Hours >= 10);
无法测试,但这应该能让你接近。
关于c# - 在 C# 中需要有关 Linq 过滤的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3345526/