我正在查看同事的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 }
我对为什么这起作用感到困惑。我的理解(可能是错误的)是,“into”关键字结束了当前范围/上下文(并且创建的任何变量现在都超出范围)并创建了一个新的。如果是这样,为什么“ea”变量仍在查询的最后一部分范围内?
最佳答案
与select
关键字一起使用时,into
将终止作用域。
与join
关键字一起使用时,into
将添加一个变量,该变量包含联接中的所有匹配项。 (这称为Group Join)
关于linq - Linq 'into'关键字混淆,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3855881/