簡體   English   中英

C# 根據特定天數將日期范圍分組

[英]C# Group a date range in parts according to a specific number of days

我有一個日期列表:

2021/09/01
2021/09/02
2021/09/03
2021/09/04
2021/09/05
2021/09/06
2021/09/07
2021/09/08
2021/09/09
......

2021/09/29

如何將日期范圍分組為 7 天的塊?:

2021/09/01
2021/09/02
2021/09/03
2021/09/04
2021/09/05
2021/09/06
2021/09/07

2021/09/08
2021/09/09
2021/09/10
2021/09/11
2021/09/12
2021/09/13
2021/09/14

....

您可以使用 LINQ 的GroupBy ,將索引除以 7:

List<List<DateTime>> weekGroups = dates
    .Select((date, index) => (date, index))
    .GroupBy(x => x.index / 7, x => x.date)
    .Select(g => g.ToList())
    .ToList();

如果您的數據可能包含一個日期的間隔或多個條目,您可以計算與最小日期的差異並將其用於分組,例如:

if (dates.Any()) // Min() will fail if there are no dates
{
  var minDate = dates.Min(x => x);
  var interval = 7d;
  var groups = from x in dates 
               group x by x.Subtract(minDate).TotalDays / interval 
               into g 
               select g;
}

上述樣本可作為指導; 您可能需要根據您的數據結構和要求對其進行調整。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM