返回IQueryable的编译查询何时执行?

Ada*_*uer 5 .net c# linq-to-sql

好的,我需要在这里进行健全检查......

我编译了一个在执行时返回IQueryable的查询.

在以下示例中,查询实际应对数据库执行哪些行?

101 IQueryable<T> results = MyCompiledQuery(MyDataContext);
102 List<T> final = (from t in result
103                  where t.ID > 5
104                  select t).ToList<T>();
Run Code Online (Sandbox Code Playgroud)

这是我如何定义编译的查询

 public static Func<MyDataContext, IQueryable<Widget>> MyCompiledQuery=
        CompiledQuery.Compile<MyDataContext, IQueryable<Widget>>(
                      (MyDataContext db) =>
                      from w in db.Widgets
                      where ((w.Type == WidgetType.Atype ||  //Widget.Atype is a Linq to Sql object, that I've defined statically
                              w.Type == WidgetType.Btype ||  //See above comment
                              w.Type == WidgetType.Ctype ) && //See above comment
                              w.Location == WidgetLocation.Domestic)  //Samething applies here
                        select euc);
Run Code Online (Sandbox Code Playgroud)

有关其他讨论,请参阅: LINQ to SQL 编译查询以及何时执行

ale*_*lex 2

“在第 104 行,进行 ToList 转换时。”

嗯,这个答案是不正确的。我们调用第 101 行 MyCompiledQuery 变量中存储的委托,该委托返回编译查询的结果,而不是查询本身。