4

我有一个任务集合,其中包含许多字段,但更重要的是 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 来做,而不是仅仅迭代循环。

提前致谢。

4

1 回答 1

4

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

var result = tasks.TakeWhile(t => t.Name != "Task 3").Sum(x => x.Duration);
于 2013-07-17T05:56:55.563 回答