Qual a diferença de Linq e Lambda? Como diferenciar Linq de Lambda ? Qual melhor usar Linq ou Lambda ?
Qual a diferença de Linq e Lambda? Como diferenciar Linq de Lambda ? Qual melhor usar Linq ou Lambda ?
Olá, Wesley
São coisas diferentes. O LINQ é um tipo de tecnologia para consultas integradas à linguagem C#. Já as expressões lambdas são um tipo de sintaxe simplificada de expressões.
(parâmetros) => expressão
Por exemplo, no código abaixo:
using System;
using System.Linq;
public class Program
{
public static void Main()
{
int[] meuArray = {1,5,3,7,2,8,4,9};
var novoArray = meuArray
.OrderBy(i => i)
.Select(i => i * 100)
.ToArray();
foreach(var i in novoArray)
{
Console.WriteLine(i);
}
}
}
Os métodos OrderBy
e Select
fazem parte do LINQ.
Mas veja como a assinatura do método OrderBy()
é complexa:
public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector
)
Por essa assinatura, teríamos que passar o argumento da expressão de ordenação como: Func<TSource, TKey> keySelector
.
Em vez disso, dentro desses métodos, os argumentos foram passados como expressões lambda:
.OrderBy(i => i)
.Select(i => i * 100)
Assim, as expressões ficam mais fáceis de serem escritas do que se usarmos Func<TSource, TKey>
.
Então note que estamos usando ambos: LINQ e expressões lambda na mesma consuta.