Linq to objects查找索引和求和结果

时间:2013-07-17 05:55:07

标签: .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做,而不是迭代循环。

提前致谢。

1 个答案:

答案 0 :(得分:4)

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

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