鏈接LINQ語句是否會導致多次迭代?鏈接LINQ語句是否會導致多次迭代?
例如,假設我想用一個where子句來篩選數據,然後對比賽做一個總和:
int total = data.Where(item => item.Alpha == 1 && item.Beta == 2)
.Sum(item => item.Qty);
這是否導致了數據的單一互爲作用,使得它會相當於這個?
int total = 0;
foreach (var item in data)
if (item.Alpha == 1 && item.Beta == 2)
total += 1;
或者,它遍歷data
一次,where
結果第二次做的總和?
我明白,這是推遲到評估,但它迭代兩次?一次爲了哪裏,一次是爲了總和? – Matt
@Matt它不會「迭代」,直到達到「Sum」。我試圖編輯更清晰。 –
太棒了!除了做一個.ToList()或.ToArray(),是否有任何LINQ查詢會導致多個枚舉? – Matt