var devSum = repository.Devices
.Where(dev => dev.Id == deviceId)
.Join(repository.ManagementGroups, device => device.ManagementGroupId, mGroup => mGroup.Id, (device, mGroup) => new { device, mGroup.Name })
.Join(repository.DataGroups, device_mGroup => device_mGroup.device.DataGroupId, dGroup => dGroup.Id, (device_mGroup, dGroup) => new { device_mGroup.device, managerName = device_mGroup.Name, dataName = dGroup.Name })
.Join(repository.DeviceTypes, d => d.device.TypeId, t => t.Id, (d, t) => new { d.device, d.dataName, d.managerName, TypeName = t.Name })
.SingleOrDefault();
你好,我有一个查询涉及到多个表,一切都正常工作。但是我意识到某些外键可能为空。
我已经研究过GroupBy
和DefaultIfEmpty
的使用方法,它们听起来很有希望,所以我尝试将第一个Join
更改为GroupJoin
,但这会引发错误:
var devSum = repository.Devices
.Where(dev => dev.Id == deviceId)
.GroupJoin(repository.ManagementGroups, device => device.ManagementGroupId, mGroup => mGroup.Id, (device, mGroup) => new { device, mGroup.Name })
.Join(repository.DataGroups, device_mGroup => device_mGroup.device.DataGroupId, dGroup => dGroup.Id, (device_mGroup, dGroup) => new { device_mGroup.device, managerName = device_mGroup.Name, dataName = dGroup.Name })
.Join(repository.DeviceTypes, d => d.device.TypeId, t => t.Id, (d, t) => new { d.device, d.dataName, d.managerName, TypeName = t.Name })
.SingleOrDefault();
'AnonymousType#1' does not contain a definition for 'Name' and no extension method 'Name' accepting a first argument of type 'AnonymousType#1' could be found (are you missing a using directive or an assembly reference?)
Can anyone help please?
GroupJoin
版本在哪里? - gdoron