Compartilhar via


Operadores de sequência

Em termos gerais, o LINQ to SQL não é compatível com os operadores de sequência que têm uma ou mais das seguintes qualidades:

  • Leva um método com um parâmetro de índice.

  • Confie nas propriedades de linhas sequenciais, como o TakeWhile.

  • Confie em uma implementação arbitrária de CLR, como IComparer<T>.

Exemplos de sem suporte
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

Diferenças do .NET

Todos os operadores suporte a sequência funciona como esperado em Common Language Runtime (CLR) a exceção de Average. Average retorna um valor do mesmo tipo que o tipo que está sendo especificado média, enquanto em CLR Average sempre retorna Double ou Decimal. Se o argumento de origem é dobrar explicitamente convertida/decimal ou o seletor converte dobrar/decimal, o SQL resultante também terá uma conversão e o resultado será como esperado.

Confira também