[英]C# Entity Framework and Linq query
在下面的查询构建中,是否有任何理由Where
子句B
与Where
子句A
分开?
truckList = (from truck in _dbcontext.Truck.Where(x => x.ClientId == clientId) //(A)
join comp in _dbcontext.TruckComponent
on truck.Equipment.ProtId equals comp.ComponentId
where truck.EquipmentId > 0 && truck.FieldId > 0 //B
select NewTruckVmFromDbTruck(truck, comp)).AsEnumerable();
它们可以加入 A 或加入 B 吗? 例如作为:
truckList = (from truck in _dbcontext.Truck.Where(
x => x.ClientId == clientId &&
truck.EquipmentId > 0 &&
truck.FieldId > 0)
...rest of query...
)
无论如何,最好不要混合 fluent 和 lambda 查询语法,怎么样:
truckList = (from truck in _dbcontext.Truck
where truck.EquipmentId > 0 && truck.FieldId > 0 && truck.ClientId == clientId
join comp in _dbcontext.TruckComponent on truck.Equipment.ProtId equals comp.ComponentId
select NewTruckVmFromDbTruck(truck, comp)).AsEnumerable();
这是因为 'truck' 和 'comp' 来自不同的表
truckList = (from truck in _dbcontext.Truck.Where(x => x.ClientId == clientId) //(A)
join comp in _dbcontext.TruckComponent
on truck.Equipment.ProtId equals comp.ComponentId
where truck.EquipmentId > 0 && truck.FieldId > 0 //B
select NewTruckVmFromDbTruck(truck, comp)).AsEnumerable();
卡车来自名为“Truck”的表,而comp来自名为“TruckComponent”的表
两者都有不同的身份,如果你只选择' Truck '表,你不会得到' TruckComponent '表数据。
select NewTruckVmFromDbTruck(truck)).AsEnumerable();
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.