estoy confundido sobre el alcance de la variable lambda, tomar por ejemplo la siguiente¿Cuál es el alcance de una variable lambda en C#?
var query =
from customer in clist
from order in olist
.Where(o => o.CustomerID == customer.CustomerID && o.OrderDate == // line 1
olist.Where(o1 => o1.CustomerID == customer.CustomerID) // line 2
.Max(o1 => o1.OrderDate) // line 3
)
select new {
customer.CustomerID,
customer.Name,
customer.Address,
order.Product,
order.OrderDate
};
En la línea 1 Tengo declarar una variable lambda 'o' lo que significa que no se puede declarar otra vez en la línea 2 (o al menos el compilador se queja si intento) ¿Pero no se queja de la línea 3 a pesar de que 'o1' ya existe?
¿Cuál es el alcance de una variable lambda?
Tiene la respuesta a continuación, me gustaría compartir una pista simple y práctica: cuando el alcance no está claro al leer el código, y cuando el alcance importa, o evite la ambigüedad visual usando diferentes nombres de variables; o escriba sus lambdas en forma larga, con llaves, haciéndolas parecer más a funciones: la mente y el ojo de la mayoría de los programadores hacen una distinción más clara cuando se ven las llaves tradicionales. –