我有数据库(SQL server)表,记录超过100 k。表包含枚举(DB中的smallInt),其值为0-5。(前端为C#),我正在编写代码以获取该枚举排序的前10条记录。,我要定制订餐。和具有枚举值的记录一样,首先应该是2,然后是4,然后是3,同样。
我不想得到所有的记录,然后使用索引器对其进行排序,然后取前10位。我应该如何编写linq语句。即使是SQL命令对我来说也是可以的。
发布于 2017-09-08 07:34:49
创建一个临时表[#EnumOrder],并将Enum值映射到所需的顺序。然后使用表内部联接,并按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]表,以获得所需的顺序。
https://stackoverflow.com/questions/46109998
复制相似问题