Linq中的Case语句用于可空的datetime字段

本文关键字:datetime 字段 用于 中的 Case 语句 Linq | 更新日期: 2023-09-27 18:09:30

我有一个基于条件填充值的可空数据时间字段的linq查询。

var result=(from t1 in context.table1
            join t2 in context.table2 
            on t1.id equals t2.fieldId
            select new model1
            {
                name= t2.name,
                DateCompleted = t1.Status == "Success" 
                    ? Convert.ToDateTime(t1.CompletedDate)
                    : Null
            }).ToList();

这里DateCompleted可以是空的。如果status是success,那么我只需要Completed date。否则我需要显示它为空。现在":Null"部分抛出错误。

提前感谢Subin

Linq中的Case语句用于可空的datetime字段

试试这个

var result=(from t1 in context.table1
             join t2 in context.table2 
            on t1.id equals t2.fieldId
            select new model1
            {
             name= t2.name,
             DateCompleted = t1.Status == "Success" ? Convert.ToDateTime(t1.CompletedDate): (DateTime?)null
                                                           }).ToList();

尝试以下代码:

var result=(from t1 in context.table1
            join t2 in context.table2 
            on t1.id equals t2.fieldId
            select new model1
            {
                name= t2.name,
                DateCompleted = t1.Status == "Success" 
                    ? Convert.ToDateTime(t1.CompletedDate)
                    : (DateTime?) null
            }).ToList();

您需要使用可空日期时间:default(DateTime?)