我已經寫了一些代碼,試圖描述我的關注:IEnumerable的收益率與回報相結合.AsParallel()
static void Main(string[] args)
{
IEnumerable<decimal> marks = GetClassMarks();
IEnumerable<Person> students = GetStudents();
students.AsParallel().ForAll(p => GenerateClassReport(p, marks));
Console.ReadKey();
}
GetClassMarks使用從我奇怪的數據源中它的產量回報。假設GenerateClassReport基本上用marks.Sum()/ marks.Count()來獲得班級平均值。
從我的理解,students.AsParallel()。ForAll是一個並行的foreach。
我的擔心是GetClassMarks方法中會發生什麼。
- 它會被枚舉一次或多次?
- 枚舉將在什麼順序發生?
- 我是否需要對標記執行.ToList()以確保它僅被命中一次?