我知道用
ORDER BY NEWID()
运行常规 sql 命令时的功能。我想做同样的事情,但通过 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
{
}
}
关于c# - 通过 linq2sql 选择 n 随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2369110/