投影和筛选方法
投影方法有 Select 和 SelectMany。
筛选方法为 Where。
LINQ to Entities 中支持大多数投影和筛选方法的重载,除了那些接受位置参数的方法。
联接方法
联接方法有 Join 和 GroupJoin。
这是因为比较器不能转换为数据源。
集方法
集方法有 All、Any、Concat、Contains、DefaultIfEmpty、Distinct、EqualAll、Except、Intersect 和 Union。
IEqualityComparer<T> 的集方法,原因是比较器不能转换为数据源。
排序方法
指定多个排序条件可在组中消除并列。
排序方法有 OrderBy、OrderByDescending、ThenBy、ThenByDescending 和 Reverse。
根据数据源的不同,这些排序选项可能会产生与 CLR 中不同的结果。
此举无效并将引发异常。
分组方法
分组方法为 GroupBy。
这是因为比较器不能转换为数据源。
关键字选择器比较子查询使用数据源的语义执行,其中包括与比较 null 值相关的问题。
聚合方法
聚合方法有 Aggregate、Average、Count、LongCount、Max、Min 和 Sum。
例如,SQL Server 上的 Sum 方法的默认行为是忽略所有 null 值,而不是引发异常。
聚合导致的任何异常(如 Sum 函数的溢出)都会在查询结果具体化的过程中作为数据源异常或实体框架异常引发。
因此,服务器上可能发生类型转换和精度损失,其结果与使用 CLR 语义预期得出的结果可能有所不同。
下表显示了聚合方法对 null 值和非 null 值的默认行为:
| 方法 | 无数据 | 全部 null 值 | 部分 null 值 | 无 null 值 |
|---|---|---|---|---|
Average |
返回 Null。 | 返回 Null。 | 返回序列中非 null 值的平均值。 | 计算数值序列的平均值。 |
Count |
返回 0 | 返回序列中 null 值的个数。 | 返回序列中的 null 值和非 null 值个数。 | 返回序列中的元素数。 |
Max |
返回 Null。 | 返回 Null。 | 返回序列中非 null 值的最大值。 | 返回序列中的最大值。 |
Min |
返回 Null。 | 返回 Null。 | 返回序列中非 null 值的最小值。 | 返回序列中的最小值。 |
Sum |
返回 Null。 | 返回 Null。 | 返回序列中非 null 值的和。 | 计算数值序列的和。 |
类型方法
类型方法有 Convert 和 OfType。
还支持 C# 的 is 和 as 方法。
分页方法
支持的分页方法为First, FirstOrDefault, Single, SingleOrDefault, Skip,并Take。
对空序列执行的分页方法将返回 null。