Я запутался о масштабах переменной лямбда, взять, например, следующиеКакова область применения лямбда-переменной в 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
};
В строке 1 я должен объявить переменную лямбда «O», которое означает, что я не могу объявить его снова в строке 2 (или по крайней мере, компилятор жалуется, если я пытаюсь) Но он не жалуется на строку 3, хотя «o1» уже существует?
Какова область лямбда-переменной?
У вас есть ответ ниже, я просто хотел бы поделиться простым практическим советом: когда область видимости не понятна, прочитав код, и когда область действия важна, либо избегать визуальной двусмысленности, используя разные имена переменных; или выпишите свои лямбды в длинной форме, используя фигурные скобки, делая их больше похожими на функции - ум и глаза большинства программистов делают более четкое различие, когда вы видите традиционные фигурные скобки. –