天天看點

解決在做資料分頁時報錯

解決在做資料分頁時報錯

大家都遇到過做資料分頁吧(沒遇到過就聽我說一下吧,說不定以後就遇到了)。在做資料分頁時控制器大概要做的流程就是:先查詢到資料->計算每一頁要存放資料的行數->将資料進行分頁排序。如以下代碼。

在這裡插入圖檔描述

解決在做資料分頁時報錯

如果是上面圖檔中畫紅框裡的代碼的話(上圖代碼僅供參考),那麼啟動程式的時候會報一個錯誤,錯誤如下圖。

解決在做資料分頁時報錯

這個錯誤的大概意思就是查詢資料的時候沒有給資料進行排序,下面在做分頁的時候又轉化為ToList的格式,是以程式會報一個錯誤。那究竟要怎麼排序資料呢?等一下給大家說兩種辦法。

第一種辦法就是将查詢到的資料轉換為ToList的格式(注意:後面用ToList()方法,前面也要用List<>的資料類型類型接收資料),然後在下面做分頁的時候即使沒有做資料的排序,但是程式也是不會報錯的,頁面也是可以做出分頁的效果的。但是不建議大家用這種方法解決問題。因為一旦查詢資料的時候用了ToList()的方法就會在資料分頁之前把資料庫裡的資料提取出來,如果資料庫裡的資料相對比較少是可以的,但是如果遇到資料庫裡的表有大量的資料的話就會影響程式運作的速度。是以是不推薦大家使用這種方法解決問題的。代碼如下圖。

解決在做資料分頁時報錯

第二種辦法就是用orderby将資料進行排序,這裡是将資料進行了倒序的排序(注意:descending是倒序的意思相反有倒序就有正序啦!那ascending就是正序的意思),然後在下面分頁的時候就可以直接将資料提取出來,這樣就可以解決報錯的問題啦!這樣頁面也是可以實作分頁的效果的。這個辦法其實就是在查詢的時候将資料進行了排序(注意:這時候的查詢且排序隻是告訴了資料庫要查詢資料這麼個請求并且将資料進行了排序而已,實際上資料庫的資料還是沒有被提出來的),然後下面做分頁的時候就可以直接提資料出來用了,這樣的話既解決了報錯又不會影響程式運作的速度這種問題啦!代碼如下圖。

解決在做資料分頁時報錯

這時候可能會有人問用ToList()方法隻是先把資料提了出來而已啊,不是更友善嗎?,為什麼會影響程式運作呢?其實呢,ToList()方法先把資料庫的資料全部提取出來這是沒有問題的,但是這時候的程式并有沒有真的要用到這些資料,這時候隻是做到查詢資料就好了,隻有分頁的時候才用到了這些資料,先提出來隻會浪費了記憶體,如果資料相對比較少的話影響是不特别大的,但是一旦遇到了資料庫裡有大量的資料的話就是影響到了程式的運作速度了。是以的話不是很推薦大家用ToList()方法解決上面的錯誤問題的。