2015-12-08 82 views
0

在Linq to SQL中,可以按周工作週數進行分組,而不是從每年的幾周開始,例如1/1/2016在12周的同一周/ 31/2015這是不同一週的一年(但它是在同一個物理周,如果你願意)Linq to SQL(實體框架)按工作分組編號

+3

實體框架!= LINQ to SQL。用ISO周查看datepart。 –

回答

0

這是一個按工作周分組的例子,工作周從最早的日期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(); 
}