Я смотрел на запрос Linq для коллег, показанный ниже (запрос выполняется правильно):
from ea in EquipmentApplication
join erl in EquipmentRoutingLocation on ea.EquipmentID equals erl.EquipmentID into erlWithNulls
from erlAll in erlWithNulls.DefaultIfEmpty()
join rl in RoutingLocation on erlAll.RoutingLocationID equals rl.RoutingLocationID into rlWithNulls
from rlAll in rlWithNulls.DefaultIfEmpty()
where ea.Equipment.Master_Cell.Area.Unit.UnitID == 1160
select new { ea.Equipment, ea.ApplicationFriendlyName, rlAll }
Я смущен, почему это работает. Мое понимание (возможно, неверно) заключается в том, что ключевое слово "в" заканчивает текущую область/контекст (и любые созданные переменные теперь не входят в сферу действия) и создает новый. Если это так, почему переменная 'ea' остается в области видимости в последней части запроса?