Busqueda local

Loading

sábado, 15 de enero de 2011

Expresiones Lambdas

Una expresión Lambda es una función anónima. Este tipo de funciones usan el operador “=>” que se lee “VA A”. Este operador tiene la misma prioridad que el operador “=” es asociativo hacia la derecha.
Las expresiones lambda se utilizan en consultas de LINQ basadas en métodos.

 Lambdas de expresión

Tiene la siguiente forma básica:
(Parámetros de entrada) => expresión
Los paréntesis sólo son opcionales si la lambda tiene un parámetro de entrada; de lo contrario, son obligatorios. Dos o más parámetros de entrada se separan por comas y se encierran entre paréntesis:
(x, y) => x == y

 Lambdas de instrucciones

Una lambda de instrucciones es similar a un lambda de expresión, salvo que las instrucciones se encierran entre llaves:
(Parámetros de entrada) => {Declaraciones;}

 Deducción de tipos en las expresiones lambda

Al escribir expresiones lambda, no tiene por qué especificar un tipo para los parámetros de entrada, ya que el compilador puede deducir el tipo según el cuerpo de la lambda, el tipo de delegado subyacente y otros factores que se describen en la especificación del lenguaje C# 3.0. Para la mayoría de los operadores de consulta estándar, la primera entrada es el tipo de los elementos en la secuencia de origen. Así, si está realizando una consulta sobre un IEnumerable<Customer>, se deducirá que la variable de entrada será un objeto Customer, lo cual significa que se podrá tener acceso a sus métodos y propiedades:
customers.Where(c => c.City == "London");

Ejemplo:
lambdas

En este código el método DELETE del repositorio, recibe como parámetro el identificador de una entidad; usando LINQ realiza la consulta para obtener todas las respuestas de un examen que estén relacionadas al identificador. Si la consulta regresa resultados, convertimos el Enumerable a LIST y después al método FOREACH del LIST le enviamos como parámetro una instrucción, misma que se ejecutara sobre cada elemento del LIST resultante. Observen el parámetro “x”.

Suerte.

No hay comentarios:

Publicar un comentario