C# 实体框架排序导航对象

C# 实体框架排序导航对象,c#,.net,linq,entity-framework,entity-framework-4,C#,.net,Linq,Entity Framework,Entity Framework 4,我有一个问题如下 return this.Context.Modules .Select(p => new { Module = p, Page = p.Pages.OrderBy(c => c.AuthOrder) }).ToList() .Select(a => a.Modul

我有一个问题如下

 return this.Context.Modules
               .Select(p => new
               {
                   Module = p,
                   Page = p.Pages.OrderBy(c => c.AuthOrder)

               }).ToList()
               .Select(a => a.Module)
               .ToList();
但我使用的是EF4.2,我试着这样做,通过SQL Profiler观察,EF生成的SQL查询比嵌套的查询多得多,我只想为这样的作业创建一个查询

select * from Modules m join Pages p on m.ID = p.Module_ID
order by p.AuthOrder

这是怎么可能的?

您可能正在寻找指定要包含在结果中的相关对象(即,在SQL请求中必须联接哪些表):


编辑: 您确定您的查询有意义吗?实际上,您只选择了
模块
,那么为什么要先订购
页面

这样的查询

select * from Modules m join Pages p on m.ID = p.Module_ID
order by p.AuthOrder
下一步可以实现:

var q = (from c in Context.Modules
            join o in Context.Pages on c.ID equals o.Module_ID
            orderby o.AuthOrder
            select new {c, o}).ToList();

ToList()操作需要两次吗?是的?我如何才能订购导航?@tobias但当您最终只选择模块而不选择页面时,为什么要订购页面?因为它在表中有一个订单(顺序)字段:),实际上它是一个站点菜单模型,一个模块有许多页面,页面必须在该菜单的每个模块下排序。此类型的返回类型是什么?我的方法是List,但它不转换。返回类型是匿名类型。你想得到什么,只有模块?然后在上面的查询中将“new{c,o}”替换为“c”。
var q = (from c in Context.Modules
            join o in Context.Pages on c.ID equals o.Module_ID
            orderby o.AuthOrder
            select new {c, o}).ToList();