於 LINQ to Entity 中隨機取得 N 筆資料
在 SQL Server 中我們可以利用 ORDER BY NewID() 搭配 TOP(如下列 T-SQL 敘述)來做到類似隨機抽樣的效果。
1: use Northwind
2: go
3:
4: select top 20 *
5: from customers
6: order by NEWID()
若您想要利用 LINQ to Entity 來做到相同的效果,可以使用 orderby 子句搭配 Guid.NewGuid 來產生亂數的結果,最後再使用 Take 方法來取得前幾筆資料,類似下列的程式碼:
1: using (NorthwindEntities context = new NorthwindEntities())
2: {
3: var query = from p in context.Customers
4: orderby Guid.NewGuid() //利用orderby Guid的方式來打亂資料
5: select p;
6: for (int i = 0; i < 3; i++)
7: {
8: foreach (var item in query.Take(20)) //利用Take方法取得前20筆資料
9: {
10: Console.WriteLine(item.CustomerID);
11: }
12: Console.WriteLine("-----------------------------");
13: }
14: }
15: Console.Read();
執行結果如下: