gpt4 book ai didi

c# - 在特定范围内按日期分组

转载 作者:行者123 更新时间:2023-11-30 13:43:41 24 4
gpt4 key购买 nike

假设我有以下项目和日期的内存中集合:

ItemID: 1, Date: 10/10/2018 11:30 AM
ItemID: 1, Date: 10/10/2018 11:32 AM
ItemID: 1, Date: 10/10/2018 11:33 AM
ItemID: 1, Date: 10/10/2018 11:34 AM
ItemID: 1, Date: 10/10/2018 11:57 AM
ItemID: 2, Date: 10/10/2018 7:45 AM
ItemID: 2, Date: 10/10/2018 7:49 AM
ItemID: 3, Date: 10/10/2018 8:45 AM
ItemID: 3, Date: 10/10/2018 9:13 AM

我想按 ItemID 和 Date 分组,但我希望它们的日期按最短日期 5 分钟 内的日期分组,在这种情况下,对于 Item 1,最短时间是: 11:30 AM 所以按照以下分钟 11:30 + 5 分钟之间的任何内容分组

在上面的数据集中,以下将被分组

ItemID: 1, Date: 10/10/2018 11:30 AM    <-- Grouped with Item 1
ItemID: 1, Date: 10/10/2018 11:32 AM <-- Grouped with Item 1
ItemID: 1, Date: 10/10/2018 11:33 AM <-- Grouped with Item 1
ItemID: 1, Date: 10/10/2018 11:34 AM <-- Grouped with Item 1


ItemID: 1, Date: 10/10/2018 11:57 AM <-- Not Grouped


ItemID: 2, Date: 10/10/2018 7:45 AM <-- Grouped with Item 2
ItemID: 2, Date: 10/10/2018 7:49 AM <-- Grouped with Item 2


ItemID: 3, Date: 10/10/2018 8:45 AM <-- Not Grouped

ItemID: 3, Date: 10/10/2018 9:13 AM <-- Not Grouped

分组的是彼此相距在 5 分钟以内的那些。

输出:

Item 1:
Date: 10/10/2018 11:30 AM <--- Lowest Minute is 30 so 30 + 5 range group
Date: 10/10/2018 11:32 AM
Date: 10/10/2018 11:33 AM
Date: 10/10/2018 11:34 AM

Item 1:
Date: 10/10/2018 11:57 AM

Item 2:
Date: 10/10/2018 7:45 AM
Date: 10/10/2018 7:49 AM

Item 3:
Date: 10/10/2018 8:45 AM

Item 3:
Date: 10/10/2018 9:13 AM

最佳答案

您可以先按 id 分组,然后按从最小组时间开始经过的总分钟数除以没有提醒的间隔对每个组进行分组:

var interval = 5;
var groupedItems = items
.GroupBy(i => i.ItemId, (k, g) => g
.GroupBy(i => (long)(i.Date - g.Min(e => e.Date)).TotalMinutes / interval))
.SelectMany(g => g);

关于c# - 在特定范围内按日期分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52747875/

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