在 .net 中,可以这样写:
(from n in numbers where n == 5 select n).ToList();
没有这些括号,就无法调用 ToList() 方法。我该如何向别人解释这一行的作用(我只能说它预编译了查询,但我不知道这是否真的 100% 正确)。
最佳答案
from n in numbers where n = 5 select n
实际上是 numbers.Where(n => n == 5)
的语法糖。因此,您正在使用 LINQ 表达式将数字列表过滤为等于 5 的数字。
但是,LINQ 评估惰性。这意味着 numbers.Where(n => n == 5)
(IEnumerable)返回的对象不是数字列表等于五。该列表仅在需要时创建,即在尝试访问 IEnumerable 的元素时创建。
ToList
将此 IEnumerable 的内容复制到列表中,这意味着必须立即计算表达式。
关于c# - 我该如何解释这段代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3427980/