4
我使用.NET編寫一個應用程序,C#,LINQ到實體和SQL Server 2008LINQ到實體查詢隨機行選擇
我想從表中隨機挑選一排。有沒有辦法使用LINQ查詢來實現這一點。一種方法是從表格中獲取行的列表,然後隨機選擇其中的一個,這非常簡單。
只是好奇,如果有一種方法在LINQ中包含隨機屬性。
我使用.NET編寫一個應用程序,C#,LINQ到實體和SQL Server 2008LINQ到實體查詢隨機行選擇
我想從表中隨機挑選一排。有沒有辦法使用LINQ查詢來實現這一點。一種方法是從表格中獲取行的列表,然後隨機選擇其中的一個,這非常簡單。
只是好奇,如果有一種方法在LINQ中包含隨機屬性。
如果沒有保證的順序ID空間,你需要運用某種排序表中的,計數的記錄數,跳隨機數字,並採取一個。所以:
var query =
from item in db.Items
orderby item.Id
select item;
// a random number in 0..count-1
var rownum = new Random().Next(query.Count() - 1);
var row = query
.Skip(rownum)
.Take(1);
排序是必要的,因爲LINQ到實體不支持無序集合Skip
(纔有意義)。
藉口僞代碼:
static IEnumerable<RowType> RandomRows()
{
while (true)
{
yield return GetRowByID((new Random).Next(NumberOfRowsInTable));
}
}
你是否指'產量回報'? – 2009-08-17 18:08:01
在您評論之前編輯提交30秒:-) – 2009-08-17 18:09:26
非常好的想法/例子 – 2009-08-17 18:10:03