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