我有一个列表,其中包含从2009年6月1日到2014年6月1日的日期。如何在C#LINQ中查询它,只选择每个月的第一个日期?
答案 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());