加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 为MVC视图订购实体框架项和子项

发布时间:2020-12-16 07:16:29 所属栏目:asp.Net 来源:网络整理
导读:如何从DbSet中对查询进行排序,并包括应该排序的子项. 例: 我有一个调度订单的模型. public class Order{ public virtual int Id { get; set; } public virtual int? SchedulingOrder { get; set; } public virtual int? WeekId { get; set; } public virtua
如何从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; }

然后是一个动作方法

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

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

相关问题:
Ordering Entity Framework sub-items for EditorFor
C# Entity Framework 4.1 Lambda Include – only select specific included values

解决方法

你是对的,你不能在Include中使用订单,这并不意味着以这种方式工作.但是您可以使用Orders集合上的OrderBy对视图中的结果进行排序.另外,你直接返回一个结果,不应该返回View(db.Weeks …);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读