【问题标题】:Compare Max Date from DB via LINQ通过 LINQ 比较 DB 中的 Max Date
【发布时间】:2017-01-05 15:22:58
【问题描述】:

我在比较两个日期时间时遇到问题。我的数据库中有很多重复记录,我需要获取实际数据。我用于获取实际数据 Linq Max()。

在数据库表中我有时间以这种格式:

2017-01-03 09:19:21.220

当我尝试使用 LINQ 过滤实际数据时

.Where(y=> y.EditDate == DB.Table.Max(q => q.EditDate.Value))

如果我尝试让 MaxDate 分离 var

var maxDate = DB.Table.Max(q => q.EditDate);

我得到了这种格式的日期

03/01/2017 09:19:21

我该如何解决这个问题,因为如果我没记错的话,Linq Max() 不会返回毫秒和微秒。

谢谢。

【问题讨论】:

  • 我相信你错了。您不会以 any 格式返回日期时间,而是将它们作为日期时间返回。很可能您用来显示问题中最后一个日期时间的任何工具都没有输出小数秒。请验证您是如何获得该文本的。
  • 我在 Visual Studio 中打破了它。在属性中我看到毫秒,但为什么这个表达式不起作用?
  • 我不知道,你实际上并没有说它不起作用,你只是说这是我似乎得到的结果,它似乎缺少小数秒,除非我弄错了。您能否确认确实有问题?
  • 抱歉。我在数据库中有很多数据,我需要从最新的编辑日期获取实际数据。如果我使用这个条件,它不会返回任何数据。
  • 请准确计算出您希望从数据库中获得多少行,执行.OrderByDescending(...).Take(X) 来获取所有这些行,获取editvalue 字段并在每个字段上执行.Ticks 以获取准确的刻度值从每个日期时间。您要求更高的精度,但我怀疑您的精度太多,因为日期时间值实际上并不相同,但它们看起来相同。

标签: c# linq datetime


【解决方案1】:

var maxDate 实际上存储毫秒,但调试器中的显示使用格式dd/MM/yyyy HH:mm:ss 没有.fff

在手表中试试maxDate.ToString('dd/MM/yyyy HH:mm:ss.fff')

【讨论】:

  • 你是对的。在属性中我看到毫秒。但是“Where”表达式,我比较两个相同的日期时间不返回任何数据。
  • @tomas 不解决比较问题,如果您只需要一条记录,我将使用.OrderByDescending(y => y.EditDate).Take(1);
  • 这是个问题,我需要更多的值,而且它是可变的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多