gpt4 book ai didi

c# - 如何按周对日期进行分组?

转载 作者:IT王子 更新时间:2023-10-29 04:36:16 24 4
gpt4 key购买 nike

我正在为我正在创建的定制应用程序编写 Excel 导出器,我对 C# 中的 LINQ 分组有疑问。

基本上,这个新的 Excel 导出器类有两个日期。然后该类检索该日期范围内的所有 cargo 。

作为该导出器的一部分,我需要能够将日期分组为数周,并获取该周的值。因此,例如,如果我得到 07/12/2011 和 22/12/2011(dd/MM/yyyy 格式),我需要将它们之间的所有 cargo 分组为数周(每周从星期日开始)。使用上述日期的理想结果是

Week 1: (consignments between 04/12/2011 and 10/12/2011) 
Week 2: (consignments between 11/12/2011 and 17/12/2011)
Week 3: (consignments between 18/11/2011 and 24/12/2011)

有什么想法吗?

最佳答案

这里的基本问题是如何将 DateTime 实例投影到一年中的一周值中。这可以通过调用 Calendar.GetWeekOfYear 来完成。 .所以定义投影:

Func<DateTime, int> weekProjector = 
d => CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(
d,
CalendarWeekRule.FirstFourDayWeek,
DayOfWeek.Sunday);

您可以通过调整方法调用中的参数来准确配置“周数”的确定方式。您还可以决定将投影定义为例如如果您愿意,可以使用扩展方法;这不会改变代码的本质。在任何情况下,您都可以按周分组:

var consignmentsByWeek = from con in consignments
group con by weekProjector(con.Date);

如果您还想将输出限制为两个特定日期之间的 cargo ,只需添加适当的 where 子句;分组逻辑不变。

关于c# - 如何按周对日期进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561782/

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