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();
}