顺序运算符 (LINQ to SQL)

一般而言,LINQ to SQL 不支持具有以下一种或多种性质的序列运算符。

  • 采用带有索引的 lambda 作为参数。

  • 依赖于顺序行的属性,如 TakeWhile

  • 依赖于任意 CLR 实现,如 IComparer<T>

不受支持的序列运算符示例

Enumerable.Where<TSource>(IEnumerable<TSource>, Func<TSource, Int32, Boolean>)

Enumerable.Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>)

Enumerable.Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>)

Enumerable.TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>)

Enumerable.TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource, Int32, Boolean>)

Enumerable.SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>)

Enumerable.SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource, Int32, Boolean>)

Enumerable.GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, IEqualityComparer<TKey>)

Enumerable.GroupBy<TSource, TKey, TElement, TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, Func<TKey, IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)

Enumerable.Reverse<TSource>(IEnumerable<TSource>)

Enumerable.DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)

Enumerable.ElementAt<TSource>(IEnumerable<TSource>, Int32)

Enumerable.ElementAtOrDefault<TSource>(IEnumerable<TSource>, Int32)

Enumerable.Range(Int32, Int32)

Enumerable.Repeat<TResult>(TResult, Int32)

Enumerable.Empty<TResult>()

Enumerable.Contains<TSource>(IEnumerable<TSource>, TSource)

Enumerable.Aggregate<TSource>(IEnumerable<TSource>, Func<TSource, TSource, TSource>)

Enumerable.Aggregate<TSource, TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>)

Enumerable.Aggregate<TSource, TAccumulate, TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>, Func<TAccumulate, TResult>)

Enumerable.SequenceEqual

与 .NET 的差异

除 Average 外,所有受支持的序列运算符在公共语言运行库 (CLR) 中均按预期方式工作。 Average 返回的值的类型与执行求平均值运算的类型相同,而在 CLR 中,Average 则始终返回 DoubleDecimal。 如果源参数被显式强制转换为 double/decimal,或者选择器强制转换为 double/decimal,则产生的 SQL 也将进行这种转换,因而结果将同预期的一样。

请参见

其他资源

数据类型和函数 (LINQ to SQL)