Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Linq转换为Sql查询转换为更好的Sql_C#_Sql_Sql Server_Linq - Fatal编程技术网

C# 将Linq转换为Sql查询转换为更好的Sql

C# 将Linq转换为Sql查询转换为更好的Sql,c#,sql,sql-server,linq,C#,Sql,Sql Server,Linq,所以我需要一些sql查询。从linq生成的sql看起来很低,存储过程超时 这就是我要做的 两张表,如下所示: dbo.Links ------------- Id Url Title 还有一个看起来像这样的 dbo.Link_Counts ----------------- Url Count 我想做的是编写一个sql查询来实现这一点 var linkCounts = Links.GroupBy(x => x.Url) .Select(grp =>

所以我需要一些sql查询。从linq生成的sql看起来很低,存储过程超时

这就是我要做的

两张表,如下所示:

dbo.Links
-------------
Id
Url
Title
还有一个看起来像这样的

dbo.Link_Counts
-----------------
Url
Count
我想做的是编写一个sql查询来实现这一点

var linkCounts = Links.GroupBy(x => x.Url)
                 .Select(grp => new Link_Counts 
                  {
                      Url = grp.First().Url,
                      Count = grp.Count()
                  });

InsertAllOnSubmit(linkCounts);
SubmitChanges();
我尝试使用的sql部分是由此生成的

    INSERT INTO Link_Counts (Url, Count)
SELECT (
    SELECT [t3].[URL]
    FROM (
        SELECT TOP (1) [t2].[URL]
        FROM [Links] AS [t2]
        WHERE (([t1].[URL] IS NULL) AND ([t2].[URL] IS NULL)) OR (([t1].[URL] IS NOT NULL) AND ([t2].[URL] IS NOT NULL) AND ([t1].[URL] = [t2].[URL]))
        ) AS [t3]
    ) AS [Url], [t1].[value] AS [Count]
FROM (
    SELECT COUNT(*) AS [value], [t0].[URL]
    FROM [Links] AS [t0]
    GROUP BY [t0].[URL]
    ) AS [t1]
END
显然,对于存储过程来说,它的运行时间太长

任何帮助都将是巨大的


谢谢

我想这就是您需要为每个url插入计数的内容:

insert into Link_Counts (Url, Count)
select Url, Count(*)
from dbo.Links
group by Url

我认为这就是您需要为每个url插入计数的内容:

insert into Link_Counts (Url, Count)
select Url, Count(*)
from dbo.Links
group by Url

如果要手动编写SQL,请执行以下操作:

insert into link_counts (url, count)
select url, count(0)
from links
group by url
或者,如果您只是想修复LINQ查询以生成更好的SQL:

var linkCounts = 
    Links.GroupBy(x => x.Url)
         .Select(g => new Link_Counts
             {
                 Url = g.Key,
                 Count = g.Count()
             };

如果要手动编写SQL,请执行以下操作:

insert into link_counts (url, count)
select url, count(0)
from links
group by url
或者,如果您只是想修复LINQ查询以生成更好的SQL:

var linkCounts = 
    Links.GroupBy(x => x.Url)
         .Select(g => new Link_Counts
             {
                 Url = g.Key,
                 Count = g.Count()
             };