demoshop

demo, trying to be the best_

在 LINQ 內使用亂數排序

  • 2013-01-08 11:42:03
  • 4918

小鋪的首頁友站連結圖片跑馬燈是利用亂數排序的方法做的,之前是使用讀出來的資料丟到dataset後再做亂數排序,後來看了網路上的一些作法就發現了更讚的方式囉,這種常用的東西一定要紀錄的啦。

注意事項建議直接使用最下方介紹的 NewGuid() 來達到亂數排序的效果。

 

以上三種方法的寫法都很棒,剛好demo正在學習LINQ所以就選擇了保哥的範例來實做,先建立一個檢視表(view)內容如下

SELECT fw_imgUrl,NEWID() AS id, fw_webName FROM dbo.friendWeb

利用NEWID()產生一個類似guid的不規則值,並且每次執行都會重新產生一次


然後利用LINQ讀取出來就好啦

dcFriendWebDataContext dc = new dcFriendWebDataContext();
var emps = from p in dc.viewShowFriendImg
orderby p.id
select new { p.fw_imgUrl,p.fw_webName };

因為p.id是利用NEWID()產生出來的亂數,所以拿p.id來排序就可以達到亂數排序的需求


●不過後來覺得這樣實在是太麻煩了,所以還是直接使用

var items=Enumerable.Range(0,50).OrderBy(d=>Guid.NewGuid());

這樣子的寫法,利用 NewGuid() 來達到亂數排序,而且效能十分的高

回應討論