2010-10-12 58 views
13

Necesito una discusión sobre el rendimiento de LINQ y Lambda Expression.Comparación: LINQ vs LAMBDA Expresión

¿Cuál es mejor?

+4

Es posible que desee ver aquí http://stackoverflow.com/ questions/1182922/what-is-the-efficiency-and-performance-of-linq-and-lambda-expression-in-net –

Respuesta

34

Supongo que quiere decir query expression cuando habla de LINQ aquí.

Son equivalentes. El compilador cambia el query expression en la expresión Lambda equivalente antes de compilarlo, por lo que el IL generado es exactamente el mismo.

Ejemplo

var result = select s from intarray 
      where s < 5 
      select s + 1; 

es exactamente el mismo que

var result = intarray.Where(s => s < 5).Select(s => s+1); 

Tenga en cuenta que si se escribe la expresión de consulta como esta:

var result = select s from intarray 
      where s < 5 
      select s; 

Se convierte en:

var result = intarray.Where(s => s < 5); 

La última llamada a Seleccionar se ha omitido porque es redundante.

+3

Hubiera pensado lo mismo, pero según este sitio (http: // blog. thijssen.ch/2009/02/linq-vs-lambda-vs-loop-performance-test.html), las expresiones Lambda funcionan más rápido. He copiado la función Prueba en una aplicación, para probarla y verificó los hallazgos en ese sitio. –

+1

¿Esto significaría aprender expresiones Lambda solamente? –

+1

'query expression' es más fácil de leer especialmente para las personas nuevas – om471987

4

una comparación rápida en un reflector probablemente sea suficiente. Sin embargo, desde un punto de vista de 'preferencia', encuentro que las instrucciones lambda son más fáciles de seguir y escribir, y las uso en general, ya sea con objetos, xml o lo que sea.

Si el rendimiento es insignificante, elegiré el que mejor se adapte a sus necesidades.

que en realidad comenzó un poco tópico analizar los métodos de LINQ que pueden ser de interés:

What's your favourite linq method or 'trick'

cheers ..

Cuestiones relacionadas