none
问一个关于 mvc 排序的问题 RRS feed

  • 问题

  • Student表

    表结构:[ID] ,[LastName] ,[FirstMidName]

    在controller里面

     public ActionResult Index()
            {
                var tab = db.Students;

                tab.OrderByDescending(a => a.ID).ToList();

               // return View(db.Students.OrderByDescending(a => a.ID).ToList()); -》这一行可以正常显示倒序

                return (tab);-》这个就是正序显示
            }

    ===================================================

    前台绑定的时候model里面的数据集是一个倒序,但foreach里面第一次读的item里面的值,居然是正序的第一行,我想问一下,这个是一个什么情况

    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.LastName)
            </td> 
        </tr>
    }

    第一次foreach的时候,居然取的ID不是modi里面第一行的ID=8的值。

    这个是为什么有什么地方不对嘛,代码也不复杂怎么会这样。



    • 已编辑 cpp_1 2016年5月10日 7:42
    2016年5月10日 7:37

答案

  • 你好 CPP_1,

    var tab = db.Students;

    这代码执行完tab对象的数据类型就是System.Data.Entity.DbSet<Student>.

    tab = tab.OrderByDescending(a => a.ID).ToList();

    ToList后的数组就List<Student>,它是无法隐式转化成System.Data.Entity.DbSet<Student>的。

    解决办法其实很简单 , 直接写成一条语句就可以了。

    var tab= db.Studnets.OrderByDescending(a=>a.ID).ToList();

    OrderByDescending 这个方法的定义上写了有返回值的,如果你不接收返回值的话,就相当于白做了一次排序。

    希望能够帮到你。

     

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 cpp_1 2016年5月15日 15:17
    2016年5月11日 1:50

全部回复

  • tab = tab.OrderByDescending(a => a.ID).ToList();

    http://feiyun0112.cnblogs.com/

    2016年5月10日 7:39
    版主
  • 我TAB的值以经传到view页面里面model上面去了呀

    应该不用这么赋值了

    另外,按这个赋值

    严重性 代码 说明 项目 文件 禁止显示状态
    错误 CS0029 无法将类型“System.Collections.Generic.List<>”隐式转换为“System.Data.Entity.DbSet<>”

    2016年5月10日 7:47
  • 你好 CPP_1,

    var tab = db.Students;

    这代码执行完tab对象的数据类型就是System.Data.Entity.DbSet<Student>.

    tab = tab.OrderByDescending(a => a.ID).ToList();

    ToList后的数组就List<Student>,它是无法隐式转化成System.Data.Entity.DbSet<Student>的。

    解决办法其实很简单 , 直接写成一条语句就可以了。

    var tab= db.Studnets.OrderByDescending(a=>a.ID).ToList();

    OrderByDescending 这个方法的定义上写了有返回值的,如果你不接收返回值的话,就相当于白做了一次排序。

    希望能够帮到你。

     

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 cpp_1 2016年5月15日 15:17
    2016年5月11日 1:50