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

时间:2009-10-01 23:16:16

标签: c# linq

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

4 个答案:

答案 0 :(得分:7)

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

var firstDays = dates.Where(d=> d.Day == 1);

答案 1 :(得分:6)

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

var result = list.GroupBy(x => new { x.Year, x.Month })
                 .Select(x => x.Min());

答案 2 :(得分:2)

像这样:

dates.Where(d => d.Day == 1);

或者,使用查询理解,

from d in dates where d.Day == 1 select d;

答案 3 :(得分:2)

尝试以下

public static bool IsFirstDayOfMonth(this DateTime t) {
  var other = new DateTime(t.Year,t.Month,1);
  return other == t.Date;
}

var allDates = GetTheDates();
var filter = allDates.Where(x => x.IsFirstDayOfMonth());