原文地址: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();
注意: 这个方法如果用在数据量很大的表中有可能会有性能问题。