编辑经过进一步思考后,我决定修改下面的答案,以减少误解问题的可能性。
我在NullReferenceException
LINQ查询中获得了IEnumarable
:
designations.ForEach(desg =>
desg.ModifiedBy.UserName = userNames.SingleOrDefault(name =>
desg.ModifiedBy != null && name.Id == desg.ModifiedBy.Id) != null ?
userNames.SingleOrDefault(name => name.Id == desg.ModifiedBy.Id).UserName :
"Not Available");
我现在最好的猜测是它来自上面代码第三行的以下声明:
desg.ModifiedBy != null && name.Id == desg.ModifiedBy.Id
并且运行时在NullReferenceException
上抛出desg.ModifiedBy.Id
。但是,我知道" c#truth-ness评估短路(参见,例如,|| Operator)。在这里,如果desg.ModifiedBy == null
,那么我们永远不应该评估name.Id == desg.ModifiedBy.Id
。尽管如此,这似乎正在发生。这可能吗?
答案 0 :(得分:1)
我认为你在价值分配时得到了空白
desg.ModifiedBy.UserName = userNames.SingleOrDefault(name =>