linq自定义排序而不获取所有记录

linq Custom ordering without taking all records

我的数据库(SQL 服务器)table 有超过 10 万条记录。 Table 包含具有 0-5 个值的枚举(DB 中的 smallInt)。(前端的 C#)我正在编写代码来获取该枚举排序的前 10 条记录。 我想要定制订单。像枚举值为 2 的记录应该先出现,然后是 4,然后是 3,以此类推。

我不想获取所有记录,然后使用 icomparer 对其进行排序,然后进入前 10 名。我应该如何编写该 linq 语句。即使 SQL 命令对我来说也很好。

创建一个临时 Table [#EnumOrder]Enum 值映射到您想要的顺序。然后与您的 table 进行内部连接,并按 Order

排序
CREATE TABLE [#EnumOrder] (
    [Enum] SMALLINT
    ,[Order] SMALLINT
    )

    INSERT INTO [#EnumOrder]
    VALUES 
    (2, 1), 
    (4, 2), 
    (3, 3), 
    (5, 4), 
    (0, 5),
    (1, 6)

SELECT TOP 10 t.*
FROM dbo.[YourTable] t
INNER JOIN [#EnumOrder] o ON t.EnumColumn = o.Enum
ORDER BY o.[Order]

DROP TABLE [#EnumOrder]

现在记录将按以下顺序排序:2、4、3、5、0 和 1。您可以随时将要插入的值更改为 [#EnumOrder] table 以获得想要的顺序。