Sequenzoperatoren

Im Allgemeinen unterstützt LINQ to SQL keine Sequenzoperatoren mit mindestens einer der folgenden Eigenschaften:

  • Annehmen eines Lambda mit einem Indexparameter.

  • Verlassen Sie sich auf die Eigenschaften sequenzieller Zeilen, z. B. TakeWhile.

  • Verlassen Sie sich auf eine beliebige CLR-Implementierung, wie z. B. IComparer<T>.

Beispiele für nicht unterstützte Elemente
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

Unterschiede von .NET

Alle unterstützten Sequenzoperatoren funktionieren wie erwartet in der Common Language Runtime (CLR) mit Ausnahme von Average. Average gibt einen Wert desselben Typs zurück wie der Typ, der gemittelt wird, während in der CLR Average immer einen Double- oder einen Decimal-Wert zurückgegeben wird. Wenn das Quellargument explizit in "double/dezimal" konvertiert wird oder der Selektor in "double/dezimal" konvertiert wird, weist das resultierende SQL auch eine solche Konvertierung auf, und das Ergebnis wird wie erwartet angezeigt.

Siehe auch