任何人都可以提供帮助,我无法将以下查询转换为linq:
SELECT
COUNT(DATENAME(Month, bo.u_datadesc)),
DATENAME(Month, bo.u_datadesc),
DATEPART(Month, bo.u_datadesc),
bo.u_rpmotori
FROM
bo
WHERE
(bo.u_rpmotori = 'John' OR bo.u_rpmotori = 'Michael')
AND bo.boano = '2016'
GROUP BY
DATENAME(Month, bo.u_datadesc),
DATEPART(Month, bo.u_datadesc),
bo.u_rpmotori
ORDER BY
DATEPART(Month, bo.u_datadesc)
这里的主要问题是计数。我想计算一个月按名称和月份分组的结果数。我在SQL Server Mgmt Studio中测试了原始查询,它运行正常。
谢谢
答案 0 :(得分:0)
这是一次尝试:
继承人尝试:
(from bo in db.bo
where
(bo.u_rpmotori == "John" || bo.u_rpmotori == "Michael") &&
bo.boano == '2016'
group bo by new
{
Count = bo.u_datadesc.Month.ToString().Count(),
Month = bo.u_datadesc.Month,
bo.u_rpmotori
} into g
orderby g.Key.MonthNumeber
select new
{
Count = g.Key.Count,
Month = g.Key.Month,
Motorista = g.Key.u_rpmotori
}).ToList()
答案 1 :(得分:0)
我会将日期名称留给客户端并使用类似的内容。
(from bo in db.bo
where
(bo.u_rpmotori == "John" || bo.u_rpmotori == "Michael") &&
bo.boano == '2016'
group bo by new
{
Month = bo.u_datadesc.Month,
bo.u_rpmotori
} into g
orderby g.Key.Month
select new
{
Count = g.Count() ,
Month = g.Key.Month,
Motorista = g.Key.u_rpmotori
}).ToList()
除非您的数据可以包含具有空日期的记录,否则这应该会给您类似的结果。在这种情况下,我认为你的sql将为计数返回零,而linq代码将返回实际的记录数。