gpt4 book ai didi

c# linq 按日期时间分组到最接近的秒

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:10 25 4
gpt4 key购买 nike

我想在 C# 中使用 Linq 将以下日期时间组合在一起,如下所示:

第 1 组:

2015-03-03 15:18:42.880
2015-03-03 15:18:42.897

第 2 组:

2015-03-19 16:29:59.977
2015-03-19 16:29:59.983
2015-03-19 16:29:59.983

第 3 组:

2015-03-26 11:27:29.813
2015-03-26 11:27:30.030
2015-03-26 11:27:30.030

第 4 组:

2015-03-27 15:13:58.483
2015-03-27 15:13:58.483
2015-03-27 15:13:58.500

我对其中一些分组有疑问。目前我只是将忽略毫秒部分的日期分组。我想做的是将彼此相距 1 秒以内且没有毫秒的日期分组。到目前为止,这是我的查询:

var query =
from trans in TransactionTable.AsEnumerable()
let dateWithoutMilliseconds = trans.Field<DateTime>("TranactionDate").AddMilliseconds(-trans.Field<DateTime>("TranactionDate").Millisecond)
group trans by dateWithoutMilliseconds into g
select new
{
TransDate = g.Key,
};

最佳答案

您可以转换为 Ticks(100 纳秒),四舍五入,然后返回到 DateTime。如果你只想 GroupBy 就把 Ticks:

DateTime source = ...
...
// Up to nearest second
const int shift = 10000000;

DateTime result = new DateTime(
(source.Ticks / shift + (source.Ticks % shift >= (shift / 2) ? 1 : 0)) * shift);

// If you want just a key to group by
long key = (source.Ticks / shift + (source.Ticks % shift >= (shift / 2) ? 1 : 0)) * shift;

关于c# linq 按日期时间分组到最接近的秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38219741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com