expresiones ejemplos curso c# lambda

ejemplos - linq c#



¿Cuál es un buen uso de las expresiones lambda y cómo puedo aprender a usarlas? (3)

: son expresiones lambda útiles para cualquier cosa que no sea consultar

Las expresiones de Lamba no son más que una forma conveniente de escribir una función ''en línea''.

Por lo tanto, son útiles en cualquier lugar que desee un poco de código que se puede llamar como si fuera una función separada, pero que en realidad está escrito dentro de su llamador. (Además de mantener el código relacionado en la misma ubicación en un archivo, esto también le permite jugar juegos divertidos con alcance variable; consulte ''cierres'' para obtener una referencia).

Un ejemplo de uso de un lamba no relacionado con consultas puede ser un código que hace algo de manera asincrónica que comienza con ThreadPool.QueueUserWorkItem. El punto importante es que también podría escribir esto usando delegados anónimos (que eran una introducción de C # 2), o simplemente una función de miembro de clase separada simple.

Este http://blogs.msdn.com/jomo_fisher/archive/2005/09/13/464884.aspx es una excelente introducción paso a paso a todo esto, que podría ayudarte.

Esta pregunta ya tiene una respuesta aquí:

He leído que Lambda Expressions es una adición increíblemente poderosa para C #, pero me encuentro desconcertado por ellos. ¿Cómo pueden mejorar mi vida o mejorar mi código? ¿Alguien puede señalar un buen recurso para aprender tales expresiones?

Parecen geniales como el infierno, pero ¿cómo se relacionan con mi día a día como desarrollador de asp.net?

Editar: Gracias por los ejemplos, y gracias por el enlace a los artículos de Eric White. Todavía estoy digiriendo ésos ahora. Una pregunta rápida: ¿las expresiones lambda son útiles para algo más que consultar? Cada ejemplo que he visto ha sido una construcción de consulta.


Aquí hay un ejemplo simple de algo genial que puedes hacer con lambdas:

List<int> myList = new List<int>{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; myList.RemoveAll(x => x > 5); //myList now == {1,2,3,4,5}

El método RemoveAll toma un predicado (un delegado que toma argurments y devuelve un bool), cualquiera que coincida se elimina. Usar una expresión lambda lo hace más simple que declarar el predicado.


Lambdas trae programación funcional a C #. Son funciones anónimas que se pueden pasar como valores a otras funciones determinadas. Se usa más en LINQ.

Aquí hay un ejemplo artificial:

List<int> myInts = GetAll(); IEnumerable<int> evenNumbers = myInts.Where(x => x % 2 == 0);

Ahora cuando foreach a través de incluso los Números de la lamda

x=> x % 2 == 0

luego se aplica como un filtro a myInts.

Se vuelven realmente útiles para aumentar la legibilidad de algoritmos complicados que tendrían muchos bucles y condicionales IF anidados.