加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

linq-to-sql – Linq to SQL和Linq to Objects查询相同吗?

发布时间:2020-12-12 07:47:49 所属栏目:MsSql教程 来源:网络整理
导读:如果我们抽象出DataContext,那么L2S和L2O查询是否相同? 我已经有一个工作原型来演示这个,但它非常简单,并且想知道它是否能够支持更高级的查询. 有人知道吗? 解决方法 不,他们不一样. LINQ to Objects查询在 IEnumerableT 个集合上运行.查询遍历集合并针对集
如果我们抽象出DataContext,那么L2S和L2O查询是否相同?

我已经有一个工作原型来演示这个,但它非常简单,并且想知道它是否能够支持更高级的查询.

有人知道吗?

解决方法

不,他们不一样.

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查询工作,这告诉我它们不一样!)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读