我有LINQ查询,它必须检索一些DateTime值.Somethimes我没有匹配,我必须为该DateTime值返回NULL而不是DateTime的默认值.
我怎样才能避免这种情况并返回NULL而不是默认值?
我的LINQ:
CreatedDate = ctaMatch.Select(d => d.CreatedDate).DefaultIfEmpty().FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)
在DefaultIfEmpty中,我只能放置DateTime.
Yul*_*dra 15
如果集合为空DateTime?,则将其强制转换为将导致DefaultIfEmpty创建包含空值的默认集合.
CreatedDate = ctaMatch
.Select(d => (DateTime?)d.CreatedDate)
.DefaultIfEmpty()
.FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)
PS:在DefaultIfEmpty可以省略,因为它的后面FirstOrDefault.
I a*_*ica 12
您可以使用空条件运算符,?.承载您的日期属性的对象:
DateTime? date = ctaMatch.FirstOrDefault()?.CreatedDate;
Run Code Online (Sandbox Code Playgroud)
如果您的集合FirstOrDefault()返回null,则null条件运算符将返回null该CreatedDate属性.
或者,您可以选择日期并明确地将其投射到Nullable<DateTime>.
DateTime? date = ctaMatch.Select(d => (DateTime?)d.CreatedDate).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
...从而给它一个默认值null.