如何获取List <datetime>中一周中特定日期的日期数?

时间:2018-07-06 18:23:32

标签: c# lambda

早上好,我有一个列表,其中有一些日期,我需要获取一周中一天的天数,例如,获取int变量中星期天的日期数,另一个为int星期一...

我尝试使用以下代码:

List<int> SundayDates = DateList.FindAll(x => x.DayOfWeek = DayOfWeek.Sunday) 

但是它说它是只读的(而DateList是我存储日期和要获取日期的列表)。

1 个答案:

答案 0 :(得分:6)

  • 您需要使用==,即进行相等性检查。单个=是一项任务
  • 要计算出现次数,请使用Count
int numberOfSundays = DateList.Count(x => x.DayOfWeek == DayOfWeek.Sunday);

这是一周中每一天的计数。分组联接确保即使列表中不存在一天(例如,星期一不出现),其仍将出现在结果列表中,且计数为0。

dotnetfiddle

var DateList = new List<DateTime>(); // your populated list of dates

var allDaysOfWeek = Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>();
var totalDayCounts = allDaysOfWeek.GroupJoin(DateList, dayOfWeek => dayOfWeek, date => date.DayOfWeek, (dayOfWeek, times) => new
{
    DayOfTheWeek = dayOfWeek,
    DayOfWeekCount = times.Count()
});

不要忘记在代码文件的顶部添加using System.Linq;

相关问题