关于DEFERRED EXECUTION,以下评论是否正确?
1. var x = dc.myTables.Select(r=>r);//yes
2. var x = dc.myTables.Where(..).Select(r=>new {..});//yes
3. var x = dc.myTables.Where(..).Select(r=>new MyCustomClass {..});//no
Run Code Online (Sandbox Code Playgroud)
换句话说,我一直认为投射自定义类对象总是会导致急切的执行.但是我找不到支持/否认它的引用(虽然我看到的结果与它相矛盾,因此帖子)
您问题中的每个语句都是延迟执行的示例.Select和Where语句的内容对结果值是否延迟执行没有影响.在Select+ Where语句本身决定了.
作为反例,考虑该Sum方法.无论输入是什么,都始终急切地执行此操作.
var sum = dc.myTables.Sum(...); // Always eager
Run Code Online (Sandbox Code Playgroud)