日期:2014-05-17  浏览次数:20753 次

就一个IQueryable<T>对象,有没有办法知道它有没有OrderBy过?……
就一个IQueryable<T>对象,有没有办法知道它有没有OrderBy过?……

比如:


///分页
publi IQueryable<T> GetPage<T>(IQueryable<T> list, int pagesize, int page){
    if(还没排过序呢){
        //获取主键
        list = list.ordery(r=>r.主键);
    }
    list = list.skip( (page - 1) * pagesize ).take(pagesize);
}


“还没排过序”,这个有什么办法知道吗?

我现在的笨办法是先让他skip,如果抛出错误,我就去排序。但是这样执行效率就慢了好像

------解决方案--------------------
什么样的排序叫做“已经排序”?一个分页代码根本没有排序的职责,排序是调用它的客户程序的职责。设计程序时,如果职责乱了、分不清楚哪些代码应该属于哪一个文件、代码块里提交实现,你的程序就会呈指数速度快速变乱。
------解决方案--------------------
楼主解决了吗?我也正为此问题所困扰
------解决方案--------------------
EntityFramework中 不经过排序,是不能执行Skip 和Take的。。随便按照时间或者ID排下序呗