2009-06-28 9 views
6

He estado investigando realmente en LINQ, y estoy tratando de resolver este negocio de expresiones lambda. Simplemente no veo el beneficio de algunos de los matices de la sintaxis. En primer lugar, me parece que una expresión lambda es principalmente una forma diferente de utilizar una cláusula Where. ¿Por qué no usaría simplemente una cláusula Where entonces? ¿La expresión lambda es más eficiente?Cuándo usar expresiones lambda en lugar de una cláusula WHERE en LINQ

¿Es solo otra adición sintáctica para dibujar programadores de otro grupo para sentirse más cómodos en C#? ¿Hay otros casos de uso mejores para las expresiones lambda a las que aún no he expuesto?

+0

Lea esto antes de hacer estas preguntas. :) http://books.google.lv/books?id=12HliU9_D_kC&dq=pro+linq&printsec=frontcover&source=bn&hl=lv&ei=YXZHSumhH4nz_AbAtY2GCQ&sa=X&oi=book_result&ct=result&resnum=6 –

Respuesta

9

Tome un vistazo a este artículo: LINQ Query Syntax versus Method Syntax :

En general, se recomienda la sintaxis de consulta ya que suele ser más simple y más legible; sin embargo, no existe una diferencia semántica entre la sintaxis del método y la sintaxis de la consulta . Además, algunos consultas, como los que recuperan el número de elementos que responden a una condición especificado, o que recuperan el elemento que tiene el valor máximo en una secuencia fuente, sólo pueden ser expresado como llamadas de método. La documentación de referencia para los operadores de consulta estándar en el espacio de nombres System.Linq generalmente usa la sintaxis del método . Por lo tanto, incluso cuando comienza a escribir consultas LINQ, , es útil familiarizarse con cómo para usar la sintaxis del método en las consultas y en las expresiones de consulta .

Y también esta pregunta: LINQ: Dot Notation vs Query Expression

+0

¡Maldita sea que me ganes con el enlace! :) –

1

Leer this. El compilador convertirá sus consultas LINQ en expresiones Lambda en tiempo de ejecución.

1

Internamente, el compilador traducirá la sintaxis de la consulta en la sintaxis lambda más explícita. No hay ganancia de rendimiento inherente para ninguno de los estilos y el código generado para la mayoría de los escenarios es casi idéntico a lo que las personas escriben a mano.

La diferencia principal es que con la sintaxis lambda se puede encadenar en cualquier método de extensión que funcione y se devuelva y IEnumerable<T>. Con la sintaxis de consulta, usted está limitado a los métodos de extensión específicos admitidos explícitamente por el idioma (varía según el idioma)

Usar realmente o no la sintaxis de la consulta es realmente una cuestión de preferencia personal.

0
+0

Por favor, ¿pueden dar más detalles? – menjaraz

+0

Aquí hay un ejemplo de cómo puede unir secuencias usando Lambda y expresiones de consulta: –

+1

[Las respuestas que consisten en solo un enlace no se consideran útiles] (http://meta.stackexchange.com/questions/8231/are-answers-that -just-contain-links-elsewhere-really-good-answers). Es posible que desee editar su respuesta para incluir las partes relevantes del material vinculado, de modo que esté * aquí *, en el mismo sitio que la pregunta. – AakashM

Cuestiones relacionadas