lambda外部子查询迭代变量求值的数目
本文关键字:变量 外部 查询 迭代 lambda | 更新日期: 2023-09-27 18:00:57
从LINQ测验问题和答案到Q4和Q5
colors
阵列定义为:
string[] colors = { "green", "brown", "blue", "red" };
并从Answer查询到Q4:
var query =
from c in colors
where c.Length == colors.Max (c2 => c2.Length)
select c;
我是否正确理解外部查询迭代表达式c2.Length
将被求值16次?
也就是说,对于colors
阵列中的每个项目с
,colors.Max (c2 => c2.Length)
将被评估一次,即Max()
计算将总共进行4次i。对于每个Max()
评估,c2.Length
将被发现4次?
是的,这是正确的。也很容易检查,如果你有LINQPad尝试:
string[] colors = { "green", "brown", "blue", "red" };
int count = 0;
var query =
from c in colors
where c.Length == colors.Max (c2 =>
{
count.Dump();
count++;
return c2.Length;
}
)
select c;
query.Dump();