以下代码不断给我一条错误消息:
对象引用未设置为对象的实例
var partsWithDefaults =
from partsList1 in p
join partsList2 in d on
new { PartNo = partsList1.PartNumber,
Rev = partsList1.Revision }
equals
new { PartNo = partsList2.PartNumber,
Rev = partsList2.Revision } into joinedLists
from partDefaults in joinedLists.DefaultIfEmpty()
select new Part()
{
PartNumber = partsList1.PartNumber,
Revision = partsList1.Revision,
Description = partsList1.Description,
UoM = (partDefaults.UoM == null) ? "Null" : partDefaults.UoM,
ABC = (partDefaults.ABC == null) ? "Null" : partDefaults.ABC
};
partsList1是主列表,其中包含PartNumber,Revision和Description字段。 partsList2包含PartNumber和Revision字段(要加入)以及一些补充字段(代码中的2个示例是UoM和ABC)。 partsList2中可能没有为partsList1中的每个项目都有一个项目,因此需要左外连接。
p和d的类型为List<Part>
。
如何解决这个问题?
答案 0 :(得分:3)
如果joinedLists
为空,则partDefaults将为null,因此您无法取消引用它。试试这个:
UoM = partDefaults == null ? "Null" : partDefaults.UoM ?? "Null",
ABC = partDefaults == null ? "Null" : partDefaults.ABC ?? "Null",
(作为投影的最后两位)。
请注意,这可以解决partDefaults
为空或相关属性为空的问题。