序列運算子
一般而言,LINQ to SQL 不支援具有下列一項或多項特質的序列運算子:
不支援的運算子範例 |
Enumerable.Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) |
Enumerable.Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,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
以外,所有支援的序列運算子在 Common Language Runtime (CLR) 中都會如預期運作。 Average
會傳回與進行平均之型別相同型別的值,然而在 CLR 中 Average
則一律會傳回 Double 或 Decimal。 如果來源引數已明確地轉型為 double / decimal 或選取器轉型為 double / decimal,則結果產生的 SQL 也會有此種轉換,而且結果會如預期。
另請參閱