Sono confuso circa l'ambito della variabile lambda, pensiamo ad esempio il seguenteQual è lo scopo di una variabile lambda in 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
};
In linea 1 Ho dichiarare una variabile lambda 'o' che significa che non può dichiarare nuovamente nella linea 2 (o almeno il compilatore si lamenta se provo a) Ma non si lamenta della riga 3 anche se 'o1' esiste già ??
Qual è lo scopo di una variabile lambda?
Hai la risposta qui sotto, vorrei solo condividere un suggerimento semplice e pratico: quando l'ambito non è chiaro dalla lettura del codice, e quando lo scopo è importante, o evitare l'ambiguità visiva usando diversi nomi di variabili; o scrivi i tuoi lambda in forma estesa, usando le parentesi graffe, facendole sembrare più simili a funzioni - la mente e gli occhi della maggior parte dei programmatori fanno una distinzione più chiara quando vedi le tradizionali parentesi graffe. –