左外连接中的可空日期时间

Nullable DateTime in Left Outer Join

我正在尝试在 3 个表之间执行左外连接。但是,在创建输出时,出现 NullReferenceException。

我通过检查日期是否为 null 并将日期时间转换为可为 null 的值尝试了以下几个选项。

如何对 DateTime 列执行左外连接?

var query = from t1 in A
    join t2 in B
    on t1.newAsset equals t2.newAsset into grp1
    join t3 in C
    on t1.newAsset equals t3.newAsset into grp2
    from t2 in grp1.DefaultIfEmpty()
    from t3 in grp2.DefaultIfEmpty()
    select new
    {
        asset = t1.newAsset,
        standbyIssuedBeforeTarget = t1.issueDate
        standbyReturnedBeforeTarget = (DateTime?)t2.issueDate // Tried casting to a nullable date
        //standbyReturnedDuringTarget = (t3.issueDate == null ? SqlDateTime.Null : t3.issueDate) // Tried comparing issueDate to null
    };

如果 A 中的 t1 行与 B 中的任何行都不匹配,则外部联接会创建具有 t1t2 为空的输出。 然后t2.issueDate会抛出一个NullReferenceException。 你可以在 c#6:

之前写这样的东西
standbyReturnedBeforeTarget = t2 == null ? (DateTime?)null : t2.issueDate

在 C#6 中:

standbyReturnedBeforeTarget = t2?.issueDate