Entity Framework Core
实体框架数据访问技术的轻量型、可扩展、开源、跨平台版本。
49 个问题
我正在使用 .asp.net core web api + entityframework core 5.0
有一张表:
Id datetime value
0 2021-07-08 14:46:46. 1
1 2021-07-08 14:46:47 5
2 2021-07-08 14:46:48 2
3 2021-07-08 14:46:49 4
4 2021-07-08 15:30:01 7
5 2021-07-08 15:30:46 4
6 2021-07-08 15:30:46 4
7 2021-07-08 15:50:04 4
8 2021-07-08 15:50:05 6
如何将它们分组为 3 组? 因为日期时间的间隔超过分钟? 14:46:46 至 14:46:49 美国第 1 组 15:30:01 至 15:30:46 是第 2 组 15:50:04 至 15:50:05 是第 3 组x
如何分组?
Note:此问题总结整理于: How to group the data by the datetime intervals?
根据您的情况,我有一个建议可以参考。 您可以按分钟分组,这里有一个您可以参考的测试。
var Counter = new List<CounterData>
{
new CounterData {Id=0,datetime =new DateTime( 2021,07,08,14,46,46), value = 1 },
new CounterData {Id=1,datetime =new DateTime( 2021,07,08,14,46,47), value = 5 },
new CounterData {Id=2,datetime =new DateTime( 2021,07,08,14,46,48), value = 2 },
new CounterData {Id=3,datetime =new DateTime( 2021,07,08,14,46,49), value = 4 },
new CounterData {Id=4,datetime =new DateTime( 2021,07,08,15,30,01), value = 7 },
new CounterData {Id=5,datetime =new DateTime( 2021,07,08,15,30,46), value = 4 },
new CounterData {Id=6,datetime =new DateTime( 2021,07,08,15,30,46), value = 4 },
new CounterData {Id=7,datetime =new DateTime( 2021,07,08,15,50,04), value = 4 },
new CounterData {Id=8,datetime =new DateTime( 2021,07,08,15,50,05), value = 6 },
};
TimeSpan interval = new TimeSpan(0, 1, 0); // 1 minutes.
var groupedTimes = from dt in Counter
group dt by dt.datetime.Ticks / interval.Ticks
into g
select new { minute = new DateTime(g.Key * interval.Ticks), Values = g.Count() };
foreach (var value in groupedTimes)
{
Console.WriteLine(value.minute);
Console.WriteLine("\t{0}", String.Join(", ", value.Values));
}
结果:
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。