4

いくつかのフィールドを含むタスクのコレクションがありますが、さらに重要なのは Int 型の Duration です。

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 に答える