如果LINQ Query为NULL,则返回String而不是DateTime

时间:2014-07-25 10:23:20

标签: linq jquery-datatables predicate

我在我的MVC 5应用程序中使用JQuery Datatables。我正在我的MVC控制器中的一个数据表上实现排序。其中一列向用户显示日期,我希望他们能够对此列进行排序,这样可以正常工作。

//Get index of column to be sorted
var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]);

Func<survey_status, DateTime> orderingFunctionDate;

orderingFunctionDate = (c => c.InitiatedDate == null ? default(DateTime) : c.InitiatedDate.Value);

问题是,目前,如果c.InitiatedDate为NULL,则返回默认日期01/01/000 1,否则我将返回数据库中记录的实际日期。

我不喜欢我向用户返回01/01/0001,这不是很好的可用性,可能会让他们感到困惑。相反,我想返回类似于&#34;没有可用日期和#34;如果c.InitiatedDate为NULL。

问题是我无法替换

orderingFunctionDate = (c => c.InitiatedDate == null ? default(DateTime) : c.InitiatedDate.Value);

orderingFunctionDate = (c => c.InitiatedDate == null ? "No date available" : c.InitiatedDate.Value);

因为函数Func<survey_status, DateTime> orderingFunctionDate返回DateTime而不是字符串,并且在进行此更改时出现错误no implicit conversion between string and DateTime

任何人都可以帮我解决这个问题吗?

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

您应该使用nullabel DateTime并返回null而不是默认日期。将您的函数原型更改为:

Func<survey_status, DateTime?> orderingFunctionDate;

内容:

orderingFunctionDate = (c => c.InitiatedDate);

然后我相信jQuery DataTables你可以指定一个值,当数据为空时使用。