2013-07-17 18 views
4

我有一个任务集合,其中包含多个字段,但更重要的是Int类型的持续时间。Linq到对象查找索引和总和结果

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

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

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

+1只是我在想什么。 –

+0

你是认真的吗....我刚发布了这个,并认为我不会得到答案。两分钟后和宾果!非常感谢...我现在就试试!显然,我需要学习更多的linq及其强大的善意! –

+0

@GlenHong永远不要低估Linq的力量:p –