为MVC视图订购实体框架项和子项

Ben*_*min 5 linq asp.net asp.net-mvc entity-framework sql-order-by

如何从DbSet中对查询进行排序,并包括应该排序的子项.

例:

我有一个调度订单的模型.

public class Order
{
  public virtual int Id { get; set; }
  public virtual int? SchedulingOrder { get; set; }
  public virtual int? WeekId { get; set; }
  public virtual Week Week { get; set; }
}
public class Week
{
  public virtual int Id { get; set; }
  public virtual DateTime StartDate { get; set; }
  public virtual ICollection<Order> Orders { get; set; }
}
...
public DbSet<Week> Weeks { get; set; }
public DbSet<Order> Orders { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后是一个动作方法

public ActionResult ShopSchedule()
{
  return View(db.Weeks.OrderBy(w => w.StartDate)
                 .Include(w => w.Orders.OrderBy(o => o.SchedulingOrder))
                 .ToList());
}
Run Code Online (Sandbox Code Playgroud)

由于性质的原因,我认为这不起作用Include.我是否必须创建单独的视图模型并映射到它?或者有没有办法在查询中绕过它?人们new { left = right, etc }在查询中说某种语法?

相关问题:
为EditorFor C#Entity Framework 4.1 订购实体框架子项
Lambda Include - 仅选择特定的包含值

Bri*_*ins 3

你是对的,你不能在 Include 中使用订单,它不应该这样工作。OrderBy但是您可以使用Orders 集合对视图中的结果进行排序。另外,你直接返回一个结果,不是吗return View(db.Weeks...)