我有一个属性,它是 LINQ 语句中选择子句的一部分。这是一个需要转换为 UTC 的截止日期。
不幸的是,这个特定的属性是一个可以为空的日期时间对象,所以我被阻止使用.ToUniversalTime()
扩展。
我不应该被允许使用空合并运算符来处理这个吗?我正在尝试这样做,但编译器对此并不满意:
item.DueDate ?? null ?? item.DueDate.ToUniversalTime().ToString("o")
我在这里错过了一些简单的东西吗?
item.DueDate == null ? null : item.DueDate.Value.ToUniversalTime().ToString("o")
使用GetValueOrDefault
on 方法Nullable<T>
,比三元合并或空合并要干净得多:
item.DueDate.GetValueOrDefault(yourDefaultHere).ToUniversalTime();
您不能使用 null 合并运算符来处理在可空对象上调用方法的情况。
试试下面的。
item.DueDate != null ? item.DueDate.ToUniversalTime().ToString("o") : null;