Partager via


Opérateurs de séquence

En général, LINQ to SQL ne prend pas en charge les opérateurs de séquence qui présentent une ou plusieurs des caractéristiques suivantes :

  • Prennent un lambda avec un paramètre d'index.

  • S'appuient sur les propriétés de lignes séquentielles, telles que TakeWhile.

  • S'appuient sur une implémentation CLR arbitraire, telle que IComparer<T>.

Exemples d'opérateurs de séquence non pris en charge
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

Différences par rapport à .NET

Tous les opérateurs de séquence pris en charge fonctionnent conformément aux attentes dans le Common Language Runtime (CLR) à l'exception d'Average. Average retourne une valeur du même type que le type dont la moyenne est calculée, alors que dans le CLR, Average retourne toujours un Double ou un Decimal. Si l’argument de source est casté explicitement en valeur double/decimal ou si le sélecteur caste vers une valeur double/decimal, le SQL obtenu aura également une telle conversion et le résultat obtenu sera conforme au résultat prévu.

Voir aussi