Freigeben über


Sequenzoperatoren (LINQ to SQL)

Im Allgemeinen unterstützt LINQ to SQL keine Sequenzoperatoren, die über eine oder mehrere der folgenden Qualitäten verfügen:

  • Annehmen eines Lambda mit einem Indexparameter.

  • Verwenden der Eigenschaften sequenzieller Zeilen, wie TakeWhile.

  • Verwenden einer beliebigen CLR-Implementierung, 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, 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 zu .NET

Alle unterstützten Sequenzoperatoren funktionieren in der Common Language Runtime (CLR) wie erwartet, außer Average. Average gibt einen Wert des Typs zurück, der dem Typ entspricht, dessen Durchschnitt ermittelt wird, wohingegen Average in der CLR entweder immer ein Double oder ein Decimal zurückgibt. Wird das Quellargument explizit in double/decimal oder wird der Selector in double/decimal umgewandelt, weist auch die resultierende SQL diese Umwandlung auf, und das Ergebnis entspricht den Erwartungen.

Siehe auch

Weitere Ressourcen

Datentypen und Funktionen (LINQ to SQL)