Quando se fala em LINQ é melhor usar Sintaxe de consulta (Query Syntax) ou Sintaxe do método (Method Syntax)?
Antes de mais nada, é interessante saber que a Query Syntax é traduzida para Method Syntax quando compilada e o resultado gerado por ambas é o mesmo.
Dê fato a Query Syntax é melhor de ler e interpretar, principalmente quando a consulta é mais complexa, mas considere usar o Method Syntax já que a Query será convertida em Method.
Abaixo vamos ver definições e exemplos.
Sintaxe de consulta (Query Syntax)
A consulta é criada usando operadores padrão de consulta LINQ
var query = from c in clientes
where c.ID == 1
orderby c.Nome
select c;
Sintaxe do método (Method Syntax):
O Method Syntax usa expressões lambda nos métodos Where, Select, GroupBy, Join, Max...
var query = clientes
.Where(c => c.ID == 1)
.OrderBy(c => c.Nome);
Lambda
Expressão lambda neste caso é apenas uma forma de construir expressão..
Expressões lambda são muito úteis para escrever expressões LINQ, como já vimos, usamos Lambda nos métodos Where, Select, GroupBy... do Method Sintax, mas isso não quer dizer que LINQ e Lambda sejam a mesma coisa, inclusive ambos podem ser usados separadamente.
Um detalhe interessante, a interface IEnumerable não possui métodos Select, Where, Orderby... mas eles aparecem no IntelliSense.
Pois é, se o IEnumerable não possui métodos Select, Where, Orderby... como eles aparecem no IntelliSense?
Bom, isso acontece porque o IEnumerable é estendido quando você adiciona o seguinte linha de código no topo da página:
using System.Linq;
Geralmente esta linha já está lá e por isso não percebemos que o IEnumerable é estendido e ganha os extension methods.
Ou então percebemos isso quando tentamos usar os extension methods e eles não aparecem no IntelliSense, então já sabe, inclua o Linq, caso contrário veremos o clássico erro: 'Select' not found