给定一个随机日期列表,是否有一个优雅的C#方式(LINQ或其他)来提取列表中的最后一个日期,按周,月,季度或年份分组?
我希望这是明确的,但如果没有,使用这个示例日期集:
-
星期一01/01/2018
-
星期二02/01/2018
-
星期四04/01/2018
-
星期二09/01/2018
-
星期四11/01/2018
-
星期五12/01/2018
-
星期一22/01/2018
-
星期二23/01/2018
-
Wed 24/01/2018
-
Wed 31/01/2018
-
星期四01/02/2018
-
星期二27/02/2018
按周提取最大值将产生
-
星期四04/01/2018 =样本第一周的最后一个日期
-
星期五12/01/2018 =样本第二周的最后一个日期
-
Wed 24/01/2018 =等
-
星期四01/02/2018
-
星期二27/02/2018
并且按月提取最大值会产生
-
Wed 31/01/2018 =样本中1月份的最后一个日期
-
星期二27/02/2018 =样本中二月份的最后一个日期
我需要能够按周数,日历月,日历季和日历年进行提取 .
我甚至不确定如何开始这个 . 所以目前我没有代码可以分享 .
任何想法都将非常受欢迎 .
CLARIFICATION: 为了我们人类的利益,这里包含了工作日的名字 . 我的实际日期是合适的 DateTime
类型 . 因此代码不需要将字符串解析为DateTimes .
另外,我可以在没有LINQ的情况下轻松编写类似的内容 . 但我所希望的是使用LINQ或其他一些聪明技巧的优雅解决方案 .
2 回答
使用LINQ这非常简单 . 这里是按 month 进行分组的示例:
这给出了你的例子:
要为 week 执行此操作,请将此lambda用于
GroupBy
:输出:
对于 quarter :
输出:
对于 year :
产量
我在C#中确定了这一点,可以适应任何其他所需的分组