edit 进一步反思后,我决定在下面修改答案,以减少误解问题的可能性。
我在此 IEnumarable
linq查询中获得了NullReferenceException
:
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#真实性评估短路(例如,参见,||操作员)。在这里,如果desg.ModifiedBy == null
,那么我们永远不应该评估name.Id == desg.ModifiedBy.Id
。但是,这似乎正在发生。这可能吗?
我认为您的价值分配为无效
desg.ModifiedBy.UserName = userNames.SingleOrDefault(name =>