我正在创建一个项目,我希望在列表中存储数据库中的日期。我使用MVC5和C#。在相应的控制器中,我将数据库中的值传递为:
var order1 = (from a in context.DB_OrderDetails
where a.OrderId == id
select new
{
a.ActualCompletedAt,
}).ToList();
在脚本中我写了
for (i = 0; i < result.order1.length; i++) {
str += '<tr>';
str += '<td> ' + order1[i].ActualCompletedAt + '</td>';
str += '<tr/>';
}
但是在列表中我得到的值是日期/ 878978978979等。 在数据库中,它就像“2015-09-24 14:59:10.837”,即正确的日期和时间。 我需要在Linq查询中进行哪些修改才能使日期不为空?
答案 0 :(得分:0)
您应该致电ToString
并正确格式化:
ActualCompletedAt = a.ActualCompletedAt("MM/dd/yyyy")
我认为ActualCompletedAt
是DateTime
个对象。如果这是一个可以为空的DateTime
对象,那么您必须先进行检查。
ActualCompletedAt = a.ActualCompletedAt != null ? a.ActualCompletedAt.Value("MM/dd/yyyy") : ""
答案 1 :(得分:0)
这是json序列化程序处理日期的方式。我确定有一种方法可以控制它是如何完成的,但是通过在控制器中的ActualCompletedAt之后附加.ToString(),一个简单的方法是将日期作为控制器中的字符串返回。
答案 2 :(得分:0)
(修订版)
我同意PeteGO,结果看起来与null值无关。
但要回答你的问题,为避免空值,你可以使用:
var order1 = (from a in context.DB_OrderDetails
where a.OrderId == id
and a.ActualCompletedAt != null
select new
{
a.ActualCompletedAt.ToString("yyyy-MM-dd hh:mm:ss.fff"),
}).ToList();
然后在脚本中:
for (i = 0; i < result.order1.length; i++) {
str += '<tr>';
str += '<td> ' + order1[i].ActualCompletedAt + '</td>';
str += '<tr/>';
}