c# – 在LINQ中确定具有微小精度的Datetime值的相等性

我需要比较两个日期时间值以确定相等(完全相同),使用精确度.这是最好的方法吗?我的日期可能有几秒和几毫秒,但我想只考虑到几分钟.
where (Math.Abs(datetime1.Subtract(datetime2).TotalMinutes) == 0)

解决方法

检查Math.Abs​​(diff.TotalMinutes)== 0是否不会这样做,不 – 检查它们是否完全相同.

您是在尝试检查它们是否有相同的分钟,或者它们是否相隔不到一分钟?首先,使用:

where RoundToMinute(dateTime1) == RoundToMinute(dateTime2)

宣布:

public static DateTime RoundToMinute(DateTime time)
{
    return new DateTime(time.Year,time.Month,time.Day,time.Hour,time.Minute,time.Kind);
}

对于第二个,使用:

where Math.Abs((dateTime1 - dateTime2).TotalMinutes) < 1

你应该考虑一下你想要的结果是一个是本地的,一个是UTC的,顺便说一下……

请注意,这里没有LINQ特定的 – 假设您正在使用LINQ to Objects.如果您正在使用LINQ to sql,那么显然您无法使用本地方法,我们将不得不重新审视……

编辑:我仍然不清楚你的问题.如果您需要它们完全相同的日期/时间,那么很容易(抛开可能的本地与UTC问题):

where dateTime1 == dateTime2

然而,这引出了一个问题,即为什么你在问题标题中提到“微小精度”或在问题体中提到“使用最多精确度”.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...