【问题标题】:get date from datetime in linq and show gridview [duplicate]从linq中的日期时间获取日期并显示gridview [重复]
【发布时间】:2016-11-09 12:47:40
【问题描述】:

我需要像这样从 linq 中的日期时间获取日期:

var items = db.Students.ToList().Select(u => new { bi = u.Birthday.Date });

但网格中的项目显示如下:

我看过其他问题:

问题1: Linq - Select Date from DateTime

但是当我类似地编辑代码时,

                var items = (from xx in db.Students                                     
                                 select new
                                 {
                                    EntityFunctions.TruncateTime(xx.Birthday)
                                 }).ToList();

我的代码有错误!!

问题2: How to get only Date from datetime column using linq

但已接受此问题的答案将日期转换为字符串!

问题3: Linq to Entity get a Date from DateTime

类似于问题1的答案。

显示网格的aspx:

<asp:GridView ID="GridView1" runat="server">            
</asp:GridView>

有没有人想办法解决这个问题?

谢谢。

【问题讨论】:

  • 日期时间从何而来?是字符串还是 DateTime 对象?
  • 看起来在获取日期时你只得到日期部分,但在显示时你没有格式化。在显示您的网格之前,请尝试使用 .ToString("dd/MM/yyyy") 进行格式化
  • 将网格列的格式属性更改为您想要的任何内容。你用的是什么网格?生成网格的 ASP.NET 代码在哪里?
  • 您应该真正开始使用搜索选项。如何格式化日期有一百万个问题。这个问题也不例外。
  • @PanagiotisKanavos 这个网格很简单。我添加aspx。

标签: c# asp.net linq datetime gridview


【解决方案1】:

正如您之前在其他问题中所说的那样;当您在某个点显示网格时调用DateTime.ToString(),这会导致显示日期和时间的默认行为。 DateTime.Date 属性只是将 DateTime 的日期部分作为 DateTime 返回;换句话说,它返回相同的内容,但时间设置为 12:00 AM。

要获取唯一的日期作为字符串,您想调用DateTime.ToShortDateString,请参见此处:https://msdn.microsoft.com/en-us/library/system.datetime.toshortdatestring(v=vs.110).aspx

简而言之,这与 Linq 无关,当您尝试在网格中显示 DateTime 对象时会出现问题,因此需要通过调整网格单元格的格式来解决。

【讨论】:

  • 不需要。大多数网格都有其列的格式属性。即使它们没有在 ASPX 文件或视图文件中进行格式化,也是格式化值的最佳位置。
  • @PanagiotisKanavos 是的,我会改写我的声明,因为这就是我想说的,但显然我不够清楚。
  • OP 在上一个问题的 LINQ 语句中调用了String.Format。以目前的形式无法正确回答这个问题
  • @PanagiotisKanavos 我认为 OP 对问题的原因感到困惑,因此我正在尝试解决这种困惑。我承认我在回答隐含的问题而不是字面的问题。
猜你喜欢
  • 2016-11-09
  • 2019-11-09
  • 2016-08-01
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多