我不断收到 ArgumentNullException“值不能为空。参数名称:inner”,具有以下 linq:
var dataSource = (from v in vouchers
join payAdj in paymentAdjustments on v.VoId equals payAdj.VoId into pTemp
from p in pTemp.DefaultIfEmpty()
select new
{
VoId = v.VoId,
OpId = v.OpId,
PaValue = p.PaValue
});
优惠券和 paymentAdjustments 都是实体列表。
我已经阅读了很多有关此问题的帖子,并且我尝试的所有操作都不断给我相同(或类似)的错误。
将 PaValue 转换为可为 null 的小数,即 PaValue = (decimal?)p.PaValue
在访问 PaValue 之前测试 p 是否为 null,即 PaValue = p != null ? p.PaValue:(十进制)0
使用 SingleOrDefault(应该只有一个)而不是 DefaultIfEmpty
进行嵌套选择而不是连接...,即 PaValue = (from p in paymentAdjustments 其中 p.Void == v.Void 选择 p.PaValue).DefaultIfEmpty()
我正在使用 c# 2010 Express 和 .Net 4。
如有任何其他建议,我们将不胜感激。
谢谢 马琳
最佳答案
我知道这已经过时了,但是对于任何寻找答案的人来说,您要加入的两个对象之一是空的。首先执行此操作。
if(优惠券!= null && payAdjustments!= null) ...
关于linq left join - 选择左实体的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11188307/