Поскольку вы используете C #, если вы используете C # 3.0, вы можете использовать LINQ.
Предполагается, что у вас есть Array / List / IQueryable и т. Д., Которые содержат ваши даты в виде типов DateTime:
DateTime[] dates = { new DateTime(2008,10,6), new DateTime(2008,10,7)}; //etc....
var mondays = dates.Where(d => d.DayOfWeek == DayOfWeek.Monday); // = {10/6/2008}
Добавлено:
Не уверен, что вы имели в виду их группирование и подсчет, но вот как это сделать и в LINQ:
var datesgrouped = from d in dates
group d by d.DayOfWeek into grouped
select new { WeekDay = grouped.Key, Days = grouped };
foreach (var g in datesgrouped)
{
Console.Write (String.Format("{0} : {1}", g.WeekDay,g.Days.Count());
}