链接 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做求和?
LINQ 中的语句是流式传输的,因此在枚举其值Where之前不会实际运行。Sum这意味着其中的项目data将被有效地枚举一次。
基本上,该Where方法创建一个新的IEnumerable<T>,但实际上并没有枚举data。  对fromSum进行 aforeach操作,依次从序列中一次拉出一个项目。IEnumerable<T>WhereWhere
| 归档时间: | 
 | 
| 查看次数: | 922 次 | 
| 最近记录: |