c# - 找出 linq 完成了多少次迭代

标签 c# linq

我想知道 LINQ 完成了多少次迭代。所以我写了一个简单的查询

string xx = "The quick brown fox jumps over the lazy dog";

char search = 'f';

int j = 0;

var result = xx.Select((b, i) => 
{
    j++;
    return b.Equals(search) ? i : -1;
})
.Where(i => 
{
    j++;
    return i != -1;
});

MessageBox.Show(j.ToString());

我以为 j 会包含完成的迭代次数,但令人惊讶的是它仍然为 0。为什么会这样?其次,如何找出 LINQ 完成了多少次迭代。

最佳答案

那是因为 LINQ 是 lazy evaluated .因此,只有在必要时才会调用 lambda。

例如最后执行.ToList()来触发它。

关于c# - 找出 linq 完成了多少次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12775125/

相关文章:

c# - "better"(更简单,更快,无论如何)版本'distinct by delegate'?

c# - 如何使用类的 Id 属性作为值将 List<T> 转换为逗号分隔的列表

c# - 返回列表中的最大重复项

linq - 2016年以后如何度过?

c# - 从列表中的 linq 查询中选择特定字段

c# - 如何用最小起订量模拟 Microsoft.Office.Interop.Excel.Range?

c# - 无法更改 C# Windows 窗体应用程序项目中的启动窗体

c# - 代码清理 : Best way to split long statement over multiple lines

c# - 从 std::fstream 读取 float 返回负零

c# - 有两个表的谓词生成器