Linq to SQL (Entity Framework) группировать по работе Номер недели

В Linq to SQL можно сгруппировать по номеру недели Рабочую неделю, а не недели из года, например, 01.01.2016 относится к той же неделе, что и 31.12.2015, а не к той же неделе года (но это на той же физической неделе, если хотите)

1 ответ

Вот пример группировки по рабочей неделе с рабочими неделями, начиная с самой старой даты в MyTable

using(var ctx = new MyEntities())
{
    DateTime firstDate = ctx.MyTable.OrderBy(x => x.Date).First().Date;
    var dates = ctx.MyTable.OrderBy(x => x.Date).Select(x => new { iVal = SqlFunctions.DateDiff("week", firstDate, x.Date), date = x.Date}).ToList();
    var datesGrouped = ctx.MyTable.OrderBy(x => x.Date).Select(x => new { iVal = SqlFunctions.DateDiff("week", firstDate, x.Date), date = x.Date}).GroupBy(x => x.iVal).ToList();
    Console.WriteLine("Ungrouped:");
    dates.ForEach(x => Console.WriteLine("Week #: " + x.iVal + " Date: " + x.date));
    Console.WriteLine("Grouped:");
    datesGrouped.ForEach(x => Console.WriteLine("Week #: " + x.Key + " Date: " + x.First().date));
    Console.ReadLine();
}
Другие вопросы по тегам