链接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