选择n个随机行我知道运行常规的SQL命令时,使用通过LINQ2SQL
ORDER BY NEWID()
功能。我想要做同样的事情,但通过linq2sql。
我宁愿不到选择整个范围内,通过rnd.Next添加一个随机数(),然后进行排序,最后...
选择n个随机行我知道运行常规的SQL命令时,使用通过LINQ2SQL
ORDER BY NEWID()
功能。我想要做同样的事情,但通过linq2sql。
我宁愿不到选择整个范围内,通过rnd.Next添加一个随机数(),然后进行排序,最后...
Marc Gravell发布了一个solution here,它允许您定义一个在DataContext的分部类中使用NEWID的函数。不要将其放置在生成的DataContext类中,否则将来的更新会消除您添加的内容。
Marc展示了如何在查询表达式语法中使用它。或者,使用点符号,可以这样写:
var results = dc.Table.OrderBy(r => dc.Random()).Take(n);
如果您不熟悉创建部分类,只需向解决方案中添加一个新类即可。只要类定义使用带有partial
关键字的DataContext类名称,它的名称就无关紧要。例如,如果你的DataContext被命名为XYZDataContext
您可以添加一个名为XYZDataContextPartial.cs
新类,并把它定义为:
namespace YourNamespace
{
public partial class XYZDataContext
{
}
}
尝试Take
扩展方法:
.OrderBy(x=>x.NewId)
.Take(randomNumber);
我们在这里所做的是:在ASC为了
如果您希望为了是随机的,试试这个:
.OrderBy(x => Guid.NewGuid())
.Take(20);
我们在这里所做的是:
完美!马克的解决方案完全按照我的意愿工作。 – benpage 2010-03-03 22:45:29