Operatory sekwencji

Ogólnie rzecz biorąc, LINQ to SQL nie obsługuje operatorów sekwencji, które mają co najmniej jedną z następujących cech:

  • Weź wyrażenie lambda z parametrem indeksu.

  • Polegaj na właściwościach wierszy sekwencyjnych, takich jak TakeWhile.

  • Polegaj na dowolnej implementacji środowiska CLR, takiej jak IComparer<T>.

Przykłady nieobsługiwanych elementów
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

Różnice w porównaniu z platformą .NET

Wszystkie obsługiwane operatory sekwencji działają zgodnie z oczekiwaniami w środowisku uruchomieniowym języka wspólnego (CLR) z wyjątkiem Average. Average Zwraca wartość tego samego typu co typ, który jest uśredniany, natomiast w clR Average zawsze zwraca wartość typu Double lub Decimal. Jeśli argument źródłowy jest jawnie rzutowany na double/decimalną lub selektor jest rzutowany na double/decimalną, wynikowy kod SQL będzie również zawierał taką konwersję, a wynik będzie zgodny z oczekiwaniami.

Zobacz także