【问题标题】:sql to linq and 2 query into 1sql to linq and 2 query into 1
【发布时间】:2021-01-02 00:03:29
【问题描述】:

美好的一天。 我有 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, cf.Conf_DisplayName, eve.Conf_ID, eve.Party_ID, eve.Point_NAME, eve.Ongoing_ID
HAVING COUNT (*) >= 2
ORDER BY eve.Conf_ID

GO

SELECT cf.Conf_StartTime, cf.Conf_DisplayName, eve.Conf_ID, eve.Party_ID, eve.Point_NAME, 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, cf.Conf_DisplayName, eve.Conf_ID, eve.Party_ID, eve.Point_NAME, Disconnect_Cause_DESCRIPTION
HAVING COUNT (*) >= 1
ORDER BY cf.Conf_DisplayName

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

问题 2. 是否可以将这两个查询合二为一?

【问题讨论】:

  • 需要查看客户端实体定义和映射
  • 在客户端究竟能看到什么?为了简化请求,然后:我试图弄清楚如何将请求结构本身转换为 linq 格式SELECT db1.NAME1, db1.NAME2, db2.NAME3, db2.NAME4, db2.NAME5, db2.NAME6, COUNT(*) AS 'num' FROM CDR_db2NT as db2 INNER JOIN CDR_Conference as db1 ON db2.NAME3 = db1.NAME3 WHERE NAME6 IS NOT NULL GROUP BY db1.NAME1, db1.NAME2, db2.NAME3, db2.NAME4, db2.NAME5, db2.NAME6 HAVING COUNT (*) &gt;= 2 ORDER BY db2.NAME3
  • 如果不知道 C# 端的类型、属性和集合的名称,我们无法为您提供任何 C#。您也没有说明您是否需要方法或查询语法。首先尝试一下会有所帮助,否则您实际上只是在要求我们为您完成工作(在 SQL 标记中很常见,但较少在 C# 中)
  • 我可能不太明白。我在程序中使用 LINQ 查询。在这种情况下,我能够发出 SQL 请求,并且我想将其作为 LINQ 请求应用到程序中。基本上不需要名称详细信息。如果我理解正确,我需要请求本身的语法,以便我已经可以将其调整为值
  • 请展示一个有效的现有 LINQ 查询示例;我想看看它“在”什么工作

标签: c# sql linq


【解决方案1】:

我认为我能够转换为 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()
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-13
    • 2021-07-10
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多