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

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

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...