ari*_*iel 5 c# vb.net sql-server week-number linq-to-sql
在常规SQL中我可以做类似的事情
SELECT * From T GROUP BY DATEPART(wk, T.Date)
Run Code Online (Sandbox Code Playgroud)
我怎么能在Linq to SQL中做到这一点?
以下不起作用
From F In DB.T Group R By DatePart(DateInterval.WeekOfYear, F.Date)
Run Code Online (Sandbox Code Playgroud)
也不工作:
From F In DB.T Group R By (F.Date.DayOfYear / 7)
Run Code Online (Sandbox Code Playgroud)
LINQ to SQL不支持Calendar.WeekOfYear方法,但您可能会创建一个TSQL 函数来包装对DatePart的调用.DayOfYear/7技巧应该适用于大多数情况,并且更容易使用.这是我最终得到的代码:
var x = from F in DB.T
group F by new {Year = F.Date.Year, Week = Math.Floor((decimal)F.Date.DayOfYear / 7)} into FGroup
orderby FGroup.Key.Year, FGroup.Key.Week
select new {
Year = FGroup.Key.Year,
Week = FGroup.Key.Week,
Count = FGroup.Count()
};
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
Year Week Count
2004 46 3
2004 47 3
2004 48 3
2004 49 3
2004 50 2
2005 0 1
2005 1 8
2005 2 3
2005 3 1
2005 12 2
2005 13 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7971 次 |
| 最近记录: |