Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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# 根据postgresql,Linq查询需要花费大量时间_C#_Linq - Fatal编程技术网

C# 根据postgresql,Linq查询需要花费大量时间

C# 根据postgresql,Linq查询需要花费大量时间,c#,linq,C#,Linq,此查询在postgresql上耗时45毫秒 select buf."Platform", buf."id", buf."idc" from dbo."tableA" as buf inner join dbo."TableB" as c on c."idc" = buf."idc"::bigint inner

此查询在postgresql上耗时45毫秒

  select buf."Platform", buf."id", buf."idc" 
    from dbo."tableA" as buf
    inner join dbo."TableB" as c 
        on c."idc" = buf."idc"::bigint
    inner join dbo."TableC" as o 
        ON o."idc" = c."idc" and  o."id" = buf."id"::bigint and o."idc" = buf."idc"::bigint
group by buf."Platform", buf."id", buf."idc"
然而,当我用linq写这篇文章时,需要花费almos 1秒。为什么要花这么长时间?我该怎么办

var List= (from buf in db.TableA
           join c in db.TableB on buf.idc equals c.idc.ToString()
           join o in db.TableC on new { x = c.idc, y = buf.idc, z = buf.id } equals new { x = o.idc, y = o.idc.ToString(), z = o.id.ToString() }                               
           group new { buf } by new { buf.Platform, buf.id, buf.idc} into grp
           select new
           {
               id= grp.Key.id,
               idc= grp.Key.idc,
               platform = grp.Key.Platform,
               count = grp.Count(),
           }
    ).ToList();

您是否查看了这两个查询的查询计划?查询计划将显示发生了什么。我猜这与创建匿名类型来进行连接有关。。。。另外,您在一个查询中分组,而不是在另一个查询中分组。您在比较苹果和橙子,一个查询只使用内部联接,而LINQ查询执行联接,并且还按匿名类型分组。也许你需要按列分组。我该怎么办@TimSchmelter@Charleh是的,我现在编辑,实际上是其中的两个grouping@TimSchmelterlinq join是同一个postgresql内部联接吗?我认为他们是一样的