Linq Distinct() 不适用于 DateTime 值

Linq Distinct() is not working with DateTime values

我正在使用以下查询,我认为它应该将我的结果过滤为 return 只有唯一的 DateTimes,但如您所见,它不起作用;下图中的记录 2 和 3 相同。这些记录中的每一个都是另一个记录的克隆,因此日期应该相同,以防毫秒或我看不到的东西影响结果。感谢任何见解。

日期似乎有不同的秒分数。这就是为什么你看到

12/5/2021 8:30:48 PM
12/5/2021 8:30:48 PM

实际日期是这样的

12/5/2021 8:30:48.123 PM 
12/5/2021 8:30:48.234 PM

让我们要么下降这些毫秒:

 ...
 .Select(x => new DateTime(x.Year, x.Month, x.Day, x.Hour, x.Minute, x.Second))
 .Distinct()
 ...

四舍五入到最接近的秒数

 ...
 .Select(x => new DateTime(x.Year, x.Month, x.Day, x.Hour, x.Minute, x.Second)
    .AddSeconds(x.Millisecond / 500))
 .Distinct()
 ...

Distinct 与完全重复项进行比较。您的屏幕截图不显示毫秒。因此,您几乎可以确定这些值 不同,即使分钟数可能相同。