如何在C#mvc5中转换字符串中的日期时间,使其不会获得空的日期时间值

如何在C#mvc5中转换字符串中的日期时间,使其不会获得空的日期时间值,c#,linq,C#,Linq,我正在创建一个项目,希望在其中将数据库中的日期存储在列表中。我使用MVC5和C。在相应的控制器中,我将数据库中的值传递为: var order1 = (from a in context.DB_OrderDetails where a.OrderId == id select new { a.ActualCompletedAt, }).ToList

我正在创建一个项目,希望在其中将数据库中的日期存储在列表中。我使用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/>';
}
for(i=0;i
但在列表中,我得到的值是date/878978978979等。 在数据库中类似于“2015-09-2414:59:10.837”,即正确的日期和时间。
我需要在Linq查询中进行哪些修改,以使日期不为空

您应该调用
ToString
并正确设置格式:

ActualCompletedAt = a.ActualCompletedAt("MM/dd/yyyy")
我假设
ActualCompletedAt
是一个
DateTime
对象。如果这是一个可为空的
DateTime
对象,则必须首先进行检查

ActualCompletedAt = a.ActualCompletedAt != null ? a.ActualCompletedAt.Value("MM/dd/yyyy") : ""

您应该调用
ToString
并正确设置格式:

ActualCompletedAt = a.ActualCompletedAt("MM/dd/yyyy")
我假设
ActualCompletedAt
是一个
DateTime
对象。如果这是一个可为空的
DateTime
对象,则必须首先进行检查

ActualCompletedAt = a.ActualCompletedAt != null ? a.ActualCompletedAt.Value("MM/dd/yyyy") : ""

这就是json序列化程序处理日期的方式。我相信有一种方法可以控制它是如何完成的,但一个简单的解决方法是在控制器中以字符串形式返回日期,方法是在控制器中ActualCompletedAt之后附加.ToString()。

这就是json序列化程序处理日期的方式。我相信有一种方法可以控制它是如何完成的,但一个简单的解决方法是在控制器中以字符串形式返回日期,方法是在控制器中的ActualCompletedAt之后附加.ToString()

我同意PeteGO的观点,结果看起来与空值无关

但要回答您的问题,避免为空,您可以使用:

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/>';
}
for(i=0;i
(更新)

我同意PeteGO的观点,结果看起来与空值无关

但要回答您的问题,避免为空,您可以使用:

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/>';
}
for(i=0;i
什么类型的
实际完成的是
?这与Null有什么关系?空值在哪里?“878978978979”不是空的…什么数据类型是
实际完成的
?这基本上就是我要找的类型是
实际完成的
?这与空有什么关系?空值在哪里?“878978978979”不是空的…实际完成的数据类型是什么for@Priya那么我认为第一个做了你想要的。请试一试,让我知道。Thanksa.ActualCompletedAt(“MM/dd/yyyy”)我在控制器中更改了此项,但给出了错误。我所说的空值是指在某些日期,我得到空值,在某些日期,我得到垃圾值,实际完成的时间是DateTime?a、 实际完成时间!=无效的a、 ActualCompletedAt.Value.ToString(“MM/dd/yyyy”):“@Priya然后请尝试第二个版本。在本例中,您有一个可为空的
DateTime
。它在Visual studio中给出了这个错误“DateTime?Actualcompletedat.tostring”2013@Priya那么我认为第一个做了你想要的。请试一试,让我知道。Thanksa.ActualCompletedAt(“MM/dd/yyyy”)我在控制器中更改了此项,但给出了错误。我所说的空值是指在某些日期,我得到空值,在某些日期,我得到垃圾值,实际完成的时间是DateTime?a、 实际完成时间!=无效的a、 ActualCompletedAt.Value.ToString(“MM/dd/yyyy”):“@Priya然后请尝试第二个版本。在本例中,您有一个可为空的
DateTime
。它在Visual studio 2013中给出了此错误“DateTime?Actualcompletedat.tostring”。我做了此操作,但我正在显示ondblclick事件列表,一旦我在脚本中进行此更改,ondblclick事件将不起作用:/hmm。。。在LINQ的where子句中添加“and”语句不应影响事件。一定还有别的事情发生。请澄清你所说的“不工作”是什么意思。这是否意味着您的列表是空的?如果是这样,那么所有的值都是空的吗?我刚刚意识到代码的第二部分在脚本中,我不知道ToString()的格式在脚本中如何工作。您可以将ToString(“…”)移动到LINQ语句中,那么您的列表将是一个已经格式化的字符串列表。我将以两种格式获取列表中的Date值—(a)Date(840878450)(b)Null。显示这两个值而不是“2015-09-24 14:59:10.837”我做了这件事,但我显示了我的ondblclick事件列表,一旦我在脚本中进行此更改,ondblclick事件将不起作用:/hmmm。。。在LINQ的where子句中添加“and”语句不应影响事件。一定还有别的事情发生。请澄清你所说的“不工作”是什么意思。这是否意味着您的列表是空的?如果是这样,那么所有的值都是空的吗?我刚刚意识到代码的第二部分在脚本中,我不知道ToString()的格式在脚本中如何工作。您可以将ToString(“…”)移动到LINQ语句中,那么您的列表将是一个已经格式化的字符串列表。我将以两种格式获取列表中的Date值—(a)Date(840878450)(b)Null。显示的是这两个值,而不是“2015-09-2414:59:10.837”