解决方法
不,他们不一样.
LINQ to Objects查询在IEnumerable<T>
个集合上运行.查询遍历集合并针对集合中的项执行一系列方法(例如,Contains
,Where
等).
LINQ to SQL查询在IQueryable<T>
集合上运行.编译器将查询转换为表达式树,然后将表达式树转换为sql并传递给数据库.
LINQ to sql常常抱怨一个方法无法转换为sql,即使该方法在LINQ to Objects查询中完美运行. (在其他情况下,您可能看不到异常,但查询结果可能在LINQ to Objects和LINQ to sql之间略有不同.)
例如,LINQ to sql将阻塞这个简单的查询,而LINQ to Objects会很好:
var query = from n in names orderby n.LastName.Trimstart(',',' ').toupper(),n.FirstName.Trimstart(',' ').toupper() select new { n.FirstName,n.LastName };
(通常可以解决这些限制,但事实上你不能保证任何LINQ to Objects查询都可以作为LINQ to SQL查询工作,这告诉我它们不一样!)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。