转:使用linq to sql 随机取一行数据的方法

原文地址:http://outofmemory.cn/code-snippet/1760/usage-linq-to-sql-suiji-take-yixing-data-method 虽然这看来已经不是真正的原文地址了

在linq to sql中我们可以通过创建一个假的用户自定义函数的方法来实现随机取一行数据的方法。

首先要在DataContext的类中添加用户自定义函数,最好是放在partial class中:

partial class MyDataContext {
[Function(Name="NEWID", IsComposable=true)]
public Guid Random()
{ // to prove not used by our C# code...
throw new NotImplementedException();
}
}

现在我们可以使用 order by ctx.Random() 这样的效果是在sql-server中执行order by NEWID()

例如:

var cust = (from row in ctx.Customers
where row.IsActive // your filter
orderby ctx.Random()
select row).FirstOrDefault();

注意: 这个方法如果用在数据量很大的表中有可能会有性能问题。

上一篇:SQL2008中Merge的用法(轉載)


下一篇:mongoDB 删除集合后,空间不释放