左外连接上的Linq错误

时间:2010-09-29 16:40:18

标签: c# linq

我有一个警报表,它有1:多的映射到设备。这种关系在映射表中传达。当我尝试从映射表生成左外连接到各种资产类型表时,我得到以下错误:System.Security.VerificationException:操作可能会破坏运行时的稳定性。

 var alertAssets = (from a in dc.MSAlert_Assets
                              from b in dc.MSRfids.Where(x => x.accountID == a.accountID && x.rfID == a.tagNum && x.custNum == a.custNum).DefaultIfEmpty()
                              from c in dc.MSDevices.Where(x => x.accountID == a.accountID && x.deviceID == a.deviceID).DefaultIfEmpty()
                              from d in dc.MSGroups.Where(x => x.accountID == a.accountID && x.groupID == a.groupID).DefaultIfEmpty()
                              let x = grrepo.getAssetsForGroupID(d.groupID, d.accountID)
                              where a.alertID == alertID
                              select new {... specific objects}

我认为这可能是一个缩小的问题,所以我想象了IQueryable,但仍然是同样的问题。

1 个答案:

答案 0 :(得分:0)

突然出现的一件事是

let x = grrepo.getAssetsForGroupID(d.groupID, d.accountID)

如果d可以为null(因为它是DefaultIfEmpty的左外连接),那么如何访问d.groupID或d.accountID。我认为这是失败的地方,因为它无法从null获取属性/变量。