.net LinqToSQL语法是否与LinqToEntity或任何其他LINQ_TO相同?

.net LinqToSQL语法是否与LinqToEntity或任何其他LINQ_TO相同?,.net,linq,.net,Linq,LinqToSQL语法是否与LinqToEntity或任何其他LINQ_TO相同?当我们处理例如SQL server中不能在XML数据或数组数据中使用的数据时,是否可以使用其他语法(可用方法) 我知道我可以在此处显示的所有数据源上使用方法: 但是有一些特定于某些LINQ提供者的方法吗 或者可以肯定地说,LINQ语法在所有提供程序中都是100%兼容的?C#语法本身是相同的:都是LINQ,它只是C#的一部分。但是,您使用的API以及允许您调用的方法可能会因LINQ提供程序的不同而有所不同 例如,在

LinqToSQL语法是否与LinqToEntity或任何其他LINQ_TO相同?当我们处理例如SQL server中不能在XML数据或数组数据中使用的数据时,是否可以使用其他语法(可用方法)

我知道我可以在此处显示的所有数据源上使用方法:

但是有一些特定于某些LINQ提供者的方法吗

或者可以肯定地说,LINQ语法在所有提供程序中都是100%兼容的?

C#语法本身是相同的:都是LINQ,它只是C#的一部分。但是,您使用的API以及允许您调用的方法可能会因LINQ提供程序的不同而有所不同

例如,在LINQtoObjects中,您可以调用几乎所有C#库中定义的方法。但是,Entity Framework和LINQ to SQL尝试将方法调用转换为SQL语法,因此,如果它们没有被显式编程为知道如何转换给定的方法或操作,那么当它们尝试执行查询时,您将收到运行时错误

LINQtoXML得到了LINQtoObjects的有效支持——我认为它没有使用自己的查询提供程序——但它提供的API允许您将XML元素视为对象。如果正在查询,则找不到类似
.Elements()
的方法,例如实体框架中的集合

大多数“LINQ to[X]”框架都基于您对
IQueryable
IEnumerable
对象调用扩展方法,但您可以通过实现
.Where()
等方法在任何对象上启用LINQ查询表达式语法。例如,实现了
.Where()
.Select()
,因此您可以说:

from m in Maybe.From(GetValue())
where m.IsCool
select m.Name

但是它没有实现
IEnumerable
接口,因此没有实现GroupBy之类的方法。如果您试图在查询
Maybe
时使用
组x by y
语法,编译器会抱怨。

您混合了LINQ和ORM

提供对对象集合的查询功能,
IEnuerable
IQueryable

提供通过对象与数据库对话的功能

有些方法,如
Last
/
LastOrDefault
TakeWhile
不适用于LINQ to SQL,因为LINQ to SQL负责将LINQ查询转换为正在部署的数据源语言,即SQL

你可以看到:

类似地,也可能存在LINQ方法,这些方法在内存收集中受支持,但在其他提供程序中不受支持。这将取决于每个提供商