在Linq路径中检查空值的更好方法

时间:2014-01-26 20:05:07

标签: c# asp.net linq

以下是从代码中提取的linq路径的赋值示例...

applicants = appRegistrations
             .ToList()
             .Select(c => new ApplicantList() { 
             PartnerType = c.Participant != null ? c.Participant.PartnerType != null ? c.Participant.PartnerType.PartnerTypeName : "" : ""
});

注意空检查 - 考虑到参与者和PartnerType可能为空,我是否可以更优雅地编写此代码?

我只是讨厌在每个属性上检查空值。

3 个答案:

答案 0 :(得分:1)

你可以稍微缩短一点:

PartnerType = c.Participant != null && c.Participant.PartnerType != null 
            ? c.Participant.PartnerType.PartnerTypeName 
            : ""

答案 1 :(得分:1)

您可以检查其中一个是null

List<ApplicantList> applicants = appRegistrations
    .Select(ar => c.Participant == null || c.Participant.PartnerType == null 
                  ? "" : c.Participant.PartnerType.PartnerTypeName)
    .Select(str => new ApplicantList { PartnerType = str })
    .ToList();

答案 2 :(得分:0)

构造Participant等对象时,确保属性永远不为空。如果nullParticipant的有效值,请考虑一下?如果没有,那么你永远不应该允许它为空。获取构造函数参数并添加一个guard子句以检查空值。否则将它们初始化为default值。

另请参阅NULL Reference Pattern