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次?

lambda外部子查询迭代变量求值的数目

是的,这是正确的。也很容易检查,如果你有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();