Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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
sql查询中缺少C#Top和Groupby_C#_Linq_Entity Framework 6 - Fatal编程技术网

sql查询中缺少C#Top和Groupby

sql查询中缺少C#Top和Groupby,c#,linq,entity-framework-6,C#,Linq,Entity Framework 6,我目前正在优化一个不符合性能要求的功能。它使用了延迟加载,这导致函数运行速度非常慢,列表中的项目不多 我要查询的主表是一个具有以下架构的表: (Id、ParentId、ChildId) 这可以表示为 存在双向关系的地方 现在通过这个查询,我尝试对连接的项目进行分组,其值是连接列表。此外,我希望这项技术的最高价值也是性能提升 这是我的删除代码: var connections = _context.Entity .Include(x => x.ParentFK.Select(y =&

我目前正在优化一个不符合性能要求的功能。它使用了延迟加载,这导致函数运行速度非常慢,列表中的项目不多

我要查询的主表是一个具有以下架构的表:

(Id、ParentId、ChildId)

这可以表示为 存在双向关系的地方

现在通过这个查询,我尝试对连接的项目进行分组,其值是连接列表。此外,我希望这项技术的最高价值也是性能提升

这是我的删除代码:

var connections = _context.Entity
    .Include(x => x.ParentFK.Select(y => y.Parent))
    .Include(x => x.ChildFK.Select(y => y.Child))
    .First(x => x.Id == id)
    .Parents
    .Concat(entity.Children)
    .GroupBy(connection => connection.ChildId == entity.Id ? connection.Parent : connection.Child, conn => conn)
    .Take(7)
    .ToList();
在这个查询中,sql的顶部和groupby都丢失了,这使我相信所有的数据都被带到内存中,然后分组并覆盖

如何在sql查询本身中获得这些信息

谢谢

更新:我重新安排了一些查询,使其更加简单。但是,我仍然没有在生成的SQL中看到top或GROUPBY子句

    var connections1 = _context.Connections
    .Include(x => x.Parent)
    .Include(x => x.Child)
    .Where(x => x.ChildId == entity.Id || x.ParentId == entity.Id)
    .GroupBy(connection => connection.ChildId == entity.Id ? connection.Parent : connection.Child, conn => conn)
    .Take(7)
    .ToList();

父母的编译时类型是什么?你说的“顶端缺失”是什么意思?生成的SQL查询是什么?哇-哪里应用了
Group
Take
First()
调用实际上执行查询。这不是EF的怪癖——这是一个获得列表第一个结果的明确请求。在此之后,在单个objectParents上工作的所有内容都是一个虚拟的ICollection。此外,生成的SQL查询相当大。基本上,它进行了大量的连接,并选择了大量的列,这是非常好的,也是预期的。我希望在查询的底部看到一个groupby子句,在。。。顶部哈哈。。没错。它可能是第一个执行查询的。也许我需要重新安排一些事情。