Sé que este es Linq:
var _Results = from item in _List
where item.Value == 1
select item;
Y sé que esto es Lambda:
var _Results = _List.Where(x => x.Value == 1);
Nota del editor: lo anterior no es simplemente Lambda, es Linq usando la "Sintaxis del método" cuyo predicado es un Lambda. Para ser claros, las dos muestras anteriores son Linq (mi publicación original era incorrecta, pero dejé el error para ilustrar la confusión que provocó la pregunta).
Pero, ¿es Linq un subconjunto de Lambda o qué?
¿Por qué hay dos técnicos aparentemente idénticos?
¿Existe una razón técnica para elegir uno sobre el otro?
Respuestas:
Esto es LINQ (usando la sintaxis de consulta):
Esto también es LINQ (usando la sintaxis del método):
Es interesante notar que ambos sabores terminarán produciendo exactamente el mismo código. El compilador le ofrece un servicio permitiéndole expresar sus deseos de la manera que prefiera.
Y esta es una lambda:
Cuando elige usar la sintaxis del método, LINQ casi siempre se ve alrededor de expresiones lambda. Pero LINQ y lambdas son dos cosas totalmente diferentes, las cuales pueden usarse por sí mismas.
Actualización: como señala acertadamente svick, LINQ con sintaxis de consulta también se implementa mediante expresiones lambda (como se mencionó anteriormente, el compilador le permite escribir en sintaxis de consulta pero la transforma de manera efectiva en sintaxis de método a sus espaldas). Esto solo se suma al hecho de que ambos sabores son totalmente equivalentes y se comportarán de la misma manera (por ejemplo, las expresiones lambda pueden hacer que se creen cierres ).
fuente
Ambos son Linq. El segundo está usando Lambdas .
Lambdas son los elementos de tipo de método en línea que está pasando como parámetro a la función Where en el segundo ejemplo.
La diferencia entre esas dos sintaxis es puramente sintáctica. El segundo estilo de linq que usa llamadas a métodos es cómo funciona bajo el capó. El primero está destinado a ser más fácil de usar y el compilador lo convierte en llamadas a métodos detrás de escena. Deberían funcionar de la misma manera para cualquier consulta dada, aunque, por supuesto, el compilador puede elegir una interpretación ligeramente diferente de una consulta de linq complicada de la que haría al convertir al estilo de método.
Este artículo de msdn también puede ser de interés: LINQ Query Syntax versus Method Syntax . De particular relevancia es: "En general, recomendamos la sintaxis de consulta porque suele ser más simple y más legible; sin embargo, no hay diferencia semántica entre la sintaxis del método y la sintaxis de la consulta".
fuente