有一些業務上並不要求查詢出全部資料,而是隨機取出幾條資料,應用場景如下:
我要從一群人當中選擇1個人獲得獎金,為了保證每個人的公平性,必須採用隨機演算法
sql語法中,我們可以這樣寫
select top 1 *
from t
order by newid()
c#當中,可以用random類來獲取隨機數
ef當中,我們寫linq時,抑或是採用linq的擴充套件方法時,發現都沒有隨機排序的方法,這就要求我們自己去擴充套件了
引用自
/// /// sql函式的擴充套件類
///
public static class sqlfunctionextensions
#endregion
#region 擴充套件方法
/// /// 隨機排序擴充套件方法
///
///
///
///
public static iqueryableorderbynewid(this ienumerablesource)
#endregion
}
但是,這個方法方法有個缺點,如果是linq查詢未載入的iqueryable集合,則無效,必須先載入(用tolist或toarray)後再隨機排序
EF 隨機排序
資料上下文擴充套件 public partial class dbdatacontext iunitofwork 對於從linq to sql遷移過來的開發者,對隨機排序不會感到陌生,直接為datacontext新增乙個方法再配合反射就可以實現隨機排序了,如面所示 而對於linq to entity...
EF 分頁查詢
使用lambda表示式 建立上下文 datamodelcontainer dbcontext new datamodelcontainer 每頁5條資料,取第3頁的資料 var data dbcontext.userinfo where u u.id 1 orderby u u.id skip 5 ...
ef 查詢語法
1 無引數查詢 varmodel db.database.sqlquery select from userinfoes tolist 2 有參查詢 varmodel db.database.sqlquery select from userinfoes where id id newsqlpara...