如何仅在结果不为 null 时才对 linq 子查询的结果执行运算符
本文关键字:结果 linq 查询 执行 运算符 何仅 null | 更新日期: 2023-09-27 18:35:20
我将把我的linq查询简化为:
var q = (from x in ...
select new
{
CustomDate = (from t in ....
select new
{t.CreatedDate}).Max(cd=>cd.CreatedDate)
})
问题是如果子查询的结果为空,Max 就会爆炸。如何在子查询为空时分配可为空的日期,并在子查询中有数据时分配最大日期?(使自定义日期成为字符串并返回日期字符串也是一种选择)
如果
TSource
是引用类型(或者碰巧是Nullable<T>
类型)并且源为空,则Enumerable.Max()
方法将返回null
。所以一个可能的选择是这样的:
let maxDate = (from t in ...
select new { t.CreatedDate }).Max(cd => (DateTime?)cd.CreatedDate)
select new
{
CustomDate = maxDate ?? DateTime.MaxValue
}
请注意,如果您不希望CustomDate
Nullable<DateTime>
,您当然可以在合并 null 后转换回所需的类型。