.net - Linq to objects 查找索引和求和结果

标签 .net linq

我有一组任务,其中包含许多字段,但更重要的是 Int 类型的持续时间。

List<Task> tasks = new List<Task>;
tasks.Add(new Task{Name= 'Task 1', Duration = 3 });
tasks.Add(new Task{Name= 'Task 2', Duration = 2});
tasks.Add(new Task{Name= 'Task 3', Duration = 1});
tasks.Add(new Task{Name= 'Task 4', Duration = 4});

给定一个任务,我想在列表中找到该任务,然后总结它之前的任何内容。例如。如果我的任务是“任务 3”,那么我想要的结果是 5,即“任务 3”之前的任务是任务 1 和任务 2,持续时间分别为 3 和 2,等于 5。

希望这是有道理的,有人可以提供答案。希望用 linq 来做到这一点,而不是仅仅迭代循环。

提前致谢。

最佳答案

您可以使用 Linq 的 TakeWhile 扩展方法后跟 Sum :

var result = tasks.TakeWhile(t => t.Name != "Task 3").Sum(x => x.Duration);

关于.net - Linq to objects 查找索引和求和结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17692122/

相关文章:

c# - 您能否使您的 UI 功能可重用?

.net - 如何实现单例 .NET 组件以供多个进程使用?

c# - 公共(public)领域可以吗?

c# - 将大量 CSV 文件上传到 SQL Server 数据库

linq - MonoDroid、SQLite 和 LINQ

c# - 如何使用 LINQ 计算最长连胜?

.net - F# csv 类型提供者问题

c# - 如何从 LiteralControl 获取 href?

c# - 对单个对象使用 LINQ 是否被认为是一种不好的做法?

c# - 如何通过 Linq 过滤一对多关系的查询