是否延期执行

Bri*_*ian 0 c# linq-to-sql

关于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)

换句话说,我一直认为投射自定义类对象总是会导致急切的执行.但是我找不到支持/否认它的引用(虽然我看到的结果与它相矛盾,因此帖子)

Jar*_*Par 7

您问题中的每个语句都是延迟执行的示例.SelectWhere语句的内容对结果值是否延迟执行没有影响.在Select+ Where语句本身决定了.

作为反例,考虑该Sum方法.无论输入是什么,都始终急切地执行此操作.

var sum = dc.myTables.Sum(...);  // Always eager 
Run Code Online (Sandbox Code Playgroud)