中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

將(jiang)不(bu)確定變為確定~Linq to SQL不(bu)能隨機排序嗎?

回到目錄

一般來(lai)說(shuo),在T-SQL時(shi)代(dai),隨機排序可以進行newid()產(chan)生出guid值來(lai)實(shi)現(xian),代(dai)碼(ma)一般為:

SELECT TOP 10 * FROM User ORDER BY NEWID();

而到了(le)linq to sql時代,由于產生的語(yu)句(ju)為延時的(可能是(shi)這(zhe)個(ge)原(yuan)因(yin)),所以你用類似這(zhe)代碼:

from user in db.User order by Guid.NewID() select user 

是不能實(shi)現(xian)的(de)(de)(de),這時,如果你的(de)(de)(de)linq to sql非要(yao)找個實(shi)現(xian)的(de)(de)(de)方(fang)法,可以在當前數據(ju)上(shang)下文(wen)類中,加個函數:(注意(yi),我們(men)為了擴(kuo)展性,最要(yao)新建一個分

部來做這事)

 1   /// <summary>
 2     /// 數(shu)據(ju)上(shang)下文擴展
 3     /// </summary>
 4     public partial class dbDataContext
 5     {
 6         /// <summary>
 7         /// 隨機排序
 8         /// </summary>
 9         /// <returns></returns>
10         [Function(Name = "NewID", IsComposable = true)]
11         public Guid NewID()
12         {
13             return ((Guid)(this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())))
                                                   .ReturnValue));
14 15 } 16 }

具體擴展代碼:

from user in db.User order by db.NewID() select user

如(ru)(ru)果(guo)希望(wang)按(an)著某個(ge)字(zi)符串中字(zi)符出現的次序,進行特定(ding)的排序,可以(yi)使用IndexOf,代碼如(ru)(ru)下:

1 List<string> productids={"1","2","3"};
2 linq.ToList().OrderByDescending(a => productids
3              .IndexOf(a.MC_ProductID))
4              .ToList();

有時(shi)(shi),我們要(yao)為(wei)多個(ge)字段進行主(zhu)要(yao),次要(yao)的排序,這時(shi)(shi),可以用linq自(zi)帶的ThenBy,比較簡單,就不舉例(li)子(zi)了。

 回到目錄

posted @ 2013-01-06 17:30  張占嶺  閱讀(1606)  評論(0)    收藏  舉報