Группа Linq to SQL (Entity Framework) по номеру рабочей недели

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


person Yitzchok Neuhaus    schedule 08.12.2015    source источник
comment
Entity Framework! = LINQ to SQL. Посмотрите на дату с неделей ISO.   -  person Gert Arnold    schedule 09.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();
}
person Jakotheshadows    schedule 08.12.2015