c# - 通过 linq2sql 选择 n 随机行

标签 c# linq-to-sql random

我知道用

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/

相关文章:

c# - Try-Finally 与 Thread.BeginCriticalRegion

c# - VB6 数组语法中的双括号(从 .Net com-interop 传递)

c# - CLR 对不可变结构做了什么?

c# - Microsoft.OData.Client.DataServiceCollection<T> 异常 : Entity set name has not been provided for an entity of type

asp.net-mvc - Linq-to-SQL 和性能

php rand vs Perl rand

php - 通过 PHP 随机化目录中的照片

linq-to-sql - 使用 Linq to SQL 进行 MERGE

visual-studio - Visual Studio 预生成事件是否保证在编译开始之前完成?

java - 获取一个重复操作的按钮