C# 如何在我的.net核心项目中执行原始SQL查询?或者如何把它翻译成Linq?

C# 如何在我的.net核心项目中执行原始SQL查询?或者如何把它翻译成Linq?,c#,asp.net,linq,.net-core,C#,Asp.net,Linq,.net Core,我很难找到任何关于执行原始查询的信息, 我不知道如何将此翻译成LINQ,或者是否可能 我的数据库集中有ContactRecords,但我真的不想这样,我想,我只需要做多次计数。。原始查询 我需要进行多次计数,并使用我创建的一个DB函数“usp_Parse_domain_name_v5”: 这是我在DOT NET CORE应用程序中尝试执行的查询: SELECT dbo.usp_Parse_domain_name_v5(ContactRecord.URL), COUNT(Conta

我很难找到任何关于执行原始查询的信息, 我不知道如何将此翻译成LINQ,或者是否可能

我的数据库集中有ContactRecords,但我真的不想这样,我想,我只需要做多次计数。。原始查询

我需要进行多次计数,并使用我创建的一个DB函数“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;

你为什么要用linq解决问题?您还可以编写一个存储过程并调用它。这更容易。如果查询太复杂,我总是使用strored过程而不是linq。这是一个例子

好的,选择的答案是 肯定帮了我

我创建了一个模型并将其添加到我的上下文中:

网关压力和转换

    public partial class GatewaysImpressionsAndConversions
    {


        public string DOMAIN { get; set; }
        public int TOTAL_IMPRESSIONS { get; set; }
        public int UNIQUE_IMPRESSIONS { get; set; }
        public int CONVERSIONS { get; set; }
        public string DATE { get; set; }
    }
也创建了存储过程

然后我在控制器上要做的就是:

 var result = _context.GatewaysImpressionsAndConversions.FromSql("GetGatewaysImpressionsAndConversionsByDay '2019.05.16'");
            return View("Statistics", await result.ToListAsync());
在我看来,在高层:
@model IEnumerable

然后循环:

 <table class="table" style="display: none" id="results">
        <thead>
            <tr>
                <th>
                    Domain
                </th>
                <th>
                    Total Impressions
                </th>
                <th>
                    Unique Impressions
                </th>
                <th>
                    Conversions
                </th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td>@item.DOMAIN</td>
                    <td>@item.TOTAL_IMPRESSIONS</td>
                    <td>@item.UNIQUE_IMPRESSIONS</td>
                    <td>@item.CONVERSIONS</td>
                </tr>
            }
        </tbody>
    </table>

领域
总印象
独特印象
转换
@foreach(模型中的var项目)
{
@item.DOMAIN
@项目.总印象
@item.UNIQUE_印象
@项目.换算
}
非常感谢!如果不是@Y.Y的回答,我现在就要把头撞到墙上了

希望这能帮助其他需要帮助的人


致以最诚挚的问候

多谢!我之所以这样做是因为你的评论,我在我自己的答案中说明了我是如何使用存储过程方法完成的。