首页 > 解决方案 > 如何在我的 Dot net core 项目中执行原始 SQL 查询?或者如何将它翻译成Linq?

问题描述

我很难找到有关执行原始查询的任何信息,我不知道如何将其转换为 LINQ,或者是否有可能。

我的 DBSet 中有 ContactRecords 但我真的不希望这样,我只需要进行多次计数..原始查询..

我需要做多个 COUNT 并使用我创建的数据库函数“usp_Parse_domain_name_v5”:

这是我试图在我的 DOT NET CORE 应用程序中执行的查询:

SELECT
    dbo.usp_Parse_domain_name_v5(ContactRecord.URL),
    COUNT(ContactRecord.ContactId) AS TOTAL_IMPRESSIONS,
    COUNT(DISTINCT ContactAttribute.ContactAttributeValue) AS UNIQUE_IMPRESSIONS,
    COUNT(DISTINCT LEADS.LEAD_ID) AS CONVERSIONS,
    MAX(convert(varchar(10), ContactRecord.CallStartDateTime, 102)) AS 'DATE'
FROM
    ContactAttribute 
    LEFT JOIN ContactRecord ON ContactRecord.ContactId = ContactAttribute.ContactId AND ContactAttribute.ContactAttributeName = 'IP'
    LEFT JOIN LEADS 
    ON LEADS.LEAD_ID = ContactRecord.ContactId
    AND LEADS.EMAIL IS NOT NULL AND LEADS.PHONENUMBER IS NOT NULL 
    AND LEADS.FIRSTNAME IS NOT NULL AND LEADS.LASTNAME IS NOT NULL
WHERE
    convert(varchar(10), ContactRecord.CallStartDateTime, 102) = '2019.05.16'
GROUP BY
    dbo.usp_Parse_domain_name_v5(URL)
ORDER BY 
    COUNT(ContactRecord.ContactId) DESC;

标签: c#asp.netlinq.net-core

解决方案


为什么要用linq解决?您还可以编写一个存储过程并调用它。那更容易。如果查询太复杂,我总是使用存储过程而不是 linq。这是一个例子;点网核心中的存储过程


推荐阅读