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
与完全重复项进行比较。您的屏幕截图不显示毫秒。因此,您几乎可以确定这些值 与 不同,即使分钟数可能相同。
我正在使用以下查询,我认为它应该将我的结果过滤为 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
与完全重复项进行比较。您的屏幕截图不显示毫秒。因此,您几乎可以确定这些值 与 不同,即使分钟数可能相同。