C#LINQ查询仅从List <DateTime>中选择一个月中的第一个日期

Kei*_*ler 0 c# linq

我有一个列表,其中包含从2009年6月1日到2014年6月1日的日期.如何在C#LINQ中查询它以仅选择每个月的第一个日期?

CMS*_*CMS 7

我认为最简单的方法是按日期的Day属性进行过滤:

var firstDays = dates.Where(d=> d.Day == 1);
Run Code Online (Sandbox Code Playgroud)

  • 这个问题的措辞太可怕了.如果您希望列表中出现的每个月的第1个月(例如1月1日,2月1日等),这是一个很好的解决方案,但如果您想要每个月列表中显示的第一个日期(例如, 1月2日,如果1月1日不在列表中,等) (2认同)

Meh*_*ari 6

你的问题有点含糊不清.如果您希望每个月在列表显示第一个项目,您可以使用:

var result = list.GroupBy(x => new { x.Year, x.Month })
                 .Select(x => x.Min());
Run Code Online (Sandbox Code Playgroud)