首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在编译时,Linq-To-Objects语句是否也会被转换为表达式树对象?

在编译时,Linq-To-Objects语句是否也会被转换为表达式树对象?
EN

Stack Overflow用户
提问于 2011-12-07 03:13:32
回答 1查看 460关注 0票数 0

在编译时,在IQueryable<T>上操作的LINQ语句(即Linq-to-SQL和Linq-to-Entities语句)被转换为表达式树对象,该对象将代码表示为数据。

a)在IEnumerable<T>上操作的LINQ语句(也就是LINQ-to-Objects )也会被翻译成表达式树吗?

b)如果不是,LINQ-to-Object语句在编译时会发生什么?编译器会简单地将它们转换为适当的方法调用吗?例如,是下一个Linq-to-Objects语句:

代码语言:javascript
复制
var results = collection.Select(item => item.id).Where(id => id > 10);

由编译器翻译成类似于以下内容的内容:

代码语言:javascript
复制
var results = Enumerable.Where(
                  Enumerable.Select(collection, item => item.id),
                  id => id > 10
              );

谢谢

EN

回答 1

Stack Overflow用户

发布于 2011-12-08 05:52:07

如果您反映代码,那么IEnumerable扩展方法实际上包含了您想要做的任何事情的实现。如果您希望它构建一个表达式树,只需在开头链接AsQueryable()扩展方法,这样您的查询就会变成:

代码语言:javascript
复制
var results = collection.AsQueryable().Select(item => item.id).Where(id => id > 10);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8405423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档