EF 隨機排序

2022-02-20 18:45:24 字數 1298 閱讀 9988

///

///資料上下文擴充套件

/// public

partial

class

dbdatacontext : iunitofwork

}

對於從linq to sql遷移過來的開發者,對隨機排序不會感到陌生,直接為datacontext新增乙個方法再配合反射就可以實現隨機排序了,**如面所示

而對於linq to entity的開發者們就不能使用上面的方法了,因為dbcontext沒有executemethodcall這個方法,呵呵,只有自己想轍了,事實上,對於system.data.entity空間裡有乙個edmfunction的特性,它與linq to sql裡的function特性類似,都是標識類為函式,就是使用資料來源的某個函式,如sqlserver的newid函式,我們可以把它思路整理一下,**就出來了,我們像它種與領域無關的**放在core專案裡,表示為公用**

///

///sql函式的擴充套件類

/// public

static

class

sqlfunctionextensions

}

而為了使開發者在使用上方法,我們把newid作成ienumerable介面的擴充套件方法,這樣無論是iqueryable還是ilist,list集合都可以直接使用它了,看**

///

///sql函式的擴充套件類

/// public

static

class

sqlfunctionextensions

#endregion

#region 擴充套件方法

//////隨機排序擴充套件方法

/// ///

//////

public

static iqueryableorderbynewid(this ienumerablesource)

#endregion

}

而使用了ienumerable的集合擴充套件後,它是否還有延時載入的特性,通過我們的檢測,答案是肯定的,它是延時的,下面是我們的例子

public

actionresult index()

結果如下:

而進行資料庫檢測的結果,出是令我們滿意的,只取了5條資料

ok,到這種使用linq to entity(entity frameworks環境下)的隨機排序就介紹到這裡,謝謝閱讀!

EF隨機查詢詳解

有一些業務上並不要求查詢出全部資料,而是隨機取出幾條資料,應用場景如下 我要從一群人當中選擇1個人獲得獎金,為了保證每個人的公平性,必須採用隨機演算法 sql語法中,我們可以這樣寫 select top 1 from t order by newid c 當中,可以用random類來獲取隨機數 ef...

自動生成EF排序

為專案中使用所寫,擴充套件實現根據實體自動生成排序,支援多欄位排序。但必須與查詢實體大小寫匹配。一,建立排序實體。排序條件模型 public class orderitemmodel public string sorttype 二,擴充套件orderby。public static iquerya...

Flex 隨機排序

呼叫方法 randomorder array 函式會返回乙個新陣列,就是該陣列隨機排序後的結果 例子 程式 varmyarray array a b c d myarray randomorder myarray 程式 隨機改變陣列的排序 functionrandomorder targetarra...