MVC5将db .Include与OrderBy结合起来

时间:2016-04-08 08:39:52

标签: asp.net include sql-order-by

在我的控制器中,我包括像这样的Balances和RZiS

Analysis1Full analysis1Full = db.Analysis1Full
                                .Include(u => u.Balance)
                                .Include(r => r.RZiS)
                                .SingleOrDefault(u => u.Analysis1FullId == id);
//enter code here
它给了我正确的对象。关键是我想按字符串归档(年份)进行排序。但它给了我一个错误:

Analysis1Full analysis1Full = db.Analysis1Full
                                .Include(u => u.Balance.OrderBy(y => y.Year))
                                .Include(r => r.RZiS)
                                .SingleOrDefault(i => i.Analysis1FullId == id);

错误:

  

EntityFramework.dll中发生了'System.ArgumentException'类型的异常,但未在用户代码中处理

     

附加信息:Include路径表达式必须引用在类型上定义的导航属性。使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性。

2 个答案:

答案 0 :(得分:0)

抛出异常的原因仅仅是因为它是以这种方式设计的。根据{{​​3}},仅包含() 指定要包含在查询结果中的相关对象。

要让孩子接受订单,您可以在访问时添加 OrderBy(),或者您需要在其他查询中加载它们。

答案 1 :(得分:0)

我这样解决了......它正在运作

Analysis1Full analysis1Full = db.Analysis1Full.Find(id);

        analysis1Full.Balance = db.Balances.Where(t=>t.Analysis1FullId == analysis1Full.Analysis1FullId).OrderBy(y=>y.Year).ToList();
        analysis1Full.RZiS = db.RZiS.Where(t => t.Analysis1FullId == analysis1Full.Analysis1FullId).OrderBy(y => y.Year).ToList(); 
你认为这是一个好方法吗?