微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql到linq和2查询成1

如何解决sql到linq和2查询成1

美好的一天。 我有2个请求。

SELECT cf.Conf_StartTime,cf.Conf_displayName,eve.Conf_ID,eve.Party_ID,eve.Point_NAME,eve.Ongoing_ID,COUNT(*) AS 'num'
FROM CDR_EVENT as eve INNER JOIN CDR_Conference as cf ON eve.Conf_ID = cf.Conf_ID 
WHERE TIMESTAMP >= '9/10/2020' AND TIMESTAMP <= '9/11/2020' AND Ongoing_ID IS NOT NULL
GROUP BY
cf.Conf_StartTime,eve.Ongoing_ID
HAVING COUNT (*) >= 2
ORDER BY eve.Conf_ID

GO

SELECT cf.Conf_StartTime,eve.disconnect_Cause_DESCRIPTION,COUNT(*) AS 'num'
FROM CDR_EVENT as eve INNER JOIN CDR_Conference as cf ON eve.Conf_ID = cf.Conf_ID 
WHERE TIMESTAMP >= '9/10/2020' AND TIMESTAMP <= '9/11/2020' AND disconnect_Cause_DESCRIPTION IS NOT NULL AND disconnect_Cause_ID != '2'
GROUP BY
cf.Conf_StartTime,disconnect_Cause_DESCRIPTION
HAVING COUNT (*) >= 1
ORDER BY cf.Conf_displayName

问题1.如何将它们转换为LINQ?

问题2。是否可以将这两个查询合并为一个

解决方法

我认为我能够转换为LINQ,事实证明并不困难。 问题2仍然有效:)

var obj = from cdr in dataContext.CDR_EVENT
where (cdr.TIMESTAMP.Date >= dTimeStart.Date && cdr.TIMESTAMP.Date <= dTimeEnd.Date && 
cdr.Ongoing_ID != null)
group (cdr) by new {cdr.Conf_ID,cdr.Party_ID,cdr.Ongoing_ID,cdr.Point_NAME } into g
where g.Count() >=2
orderby g.Key.Party_ID
select new
{
   s1 = g.Key.Conf_ID,s2 = g.Key.Party_ID,s3 = g.Key.Ongoing_ID,s4 = g.Key.Point_NAME,s5 = g.Count()
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。