【发布时间】: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以获取准确的刻度值从每个日期时间。您要求更高的精度,但我怀疑您的精度太多,因为日期时间值实际上并不相同,但它们看起来相同。