Я запутался в области лямбда-переменной, возьму, например, следующие
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" уже существует?
Какова область действия лямбда-переменной?