通过linq2sql选择n个随机行

ben*_*age 5 c# random linq-to-sql

我知道使用

ORDER BY NEWID()
Run Code Online (Sandbox Code Playgroud)

运行常规sql命令时的功能.我想做同样的事情,但通过linq2sql.

我宁愿选择整个范围内,通过rnd.Next(添加一个随机数),然后进行排序,最后...

Ahm*_*eed 3

Marc Gravell在这里发布了一个解决方案,允许您定义一个在 DataContext 的分部类中使用 NEWID 的函数。不要将其放置在生成的 DataContext 类中,否则将来的更新会清除您添加的内容。

Marc 展示了如何将其与查询表达式语法一起使用。或者,使用点表示法,您可以编写:

var results = dc.Table.OrderBy(r => dc.Random()).Take(n);
Run Code Online (Sandbox Code Playgroud)

如果您不熟悉创建分部类,只需向您的解决方案添加一个新类即可。只要类定义使用带有partial关键字的 DataContext 类名,其名称并不重要。例如,如果您的 DataContext 已命名,XYZDataContext您可以添加一个名为的新类XYZDataContextPartial.cs并将其定义为:

namespace YourNamespace
{
    public partial class XYZDataContext
    {
    }
}
Run Code Online (Sandbox Code Playgroud)