如何在linq中对SQL实现tsql的sum(...)和?

时间:2017-03-13 06:16:05

标签: c# linq linq-to-sql

我有这个功能性的t-sql查询,它对group by子句中的条目进行计数,同时产生与整个集合相比的计数百分比。

Azure中的速度非常快(约90毫秒)。我想以类似的方式实现LINQ to SQL,但我无法弄明白......

select f.worktype, f.counted, (100.0 * f.counted)/ (sum(f.counted) over ()) as percentage
from
(SELECT 
    wa.skillEN  AS workType,
    count(wa.skillEN) counted
FROM [dbo].WorkAssignments as WA 
join [dbo].WorkOrders as WO ON (WO.ID = WA.workorderID) 
WHERE wo.dateTimeOfWork < ('1/1/2014') 
and wo.dateTimeOfWork > ('1/1/2013')
and wo.statusEN = 'Completed'
group by wa.skillEN) as f
group by f.worktype, f.counted

LINQ我一直在试用LINQPad ......

WorkAssignments
.Where(wa => wa.WorkOrder.DateTimeofWork > DateTime.Now.AddYears(-2)
          && wa.WorkOrder.DateTimeofWork < DateTime.Now)
.GroupBy(wa => wa.SkillEN)
.Select(g => new
{
    label = g.Key,
    count = g.Count()
})
.GroupBy(g => new {g.label, g.count})
.Select(gg => new
{
  label = gg.Key.label,
  count = gg.Key.count,
  pct = gg.Sum(a => a.count)
})

(where子句中的日期略有不同,但我认为不相关)

那么,我如何在LINQ to SQL中实现over ()功能?

0 个答案:

没有答案