实体框架,随机查询分页

时间:2012-12-12 16:54:15

标签: c# asp.net sql sql-server

这就是我想要实现的目标:

  1. 我想查询我的数据库以返回实体列表
  2. 随机化列表
  3. 存储收到的项目的IDS以供将来查询
  4. 在同一个表上运行新查询,其中ID位于我已存储的列表中
  5. 按照我已存储的列表排序。
  6. 我已经成功实现了步骤1,2,3,4,但步骤5很难实现。任何人都可以帮我解决这样的问题:

    SELECT * 
    FROM table_name 
    WHERE id IN (1,2,3,4....)
    ORDER BY (1,2,3,4....)
    

    提前致谢

2 个答案:

答案 0 :(得分:0)

尝试

SELECT table_name.*
FROM   crazy_sorted_table
       LEFT JOIN
       table_name ON crazy_sorted_table.ID=table_name.ID

答案 1 :(得分:0)

正常连接(equi join)应该可以解决问题,这里是我测试过的示例方法:

/**crazyOrder filled 100 rows with random value from 1-250 in Id**/
CREATE TABLE [dbo].[crazyOrder] (
[Id]   INT          NOT NULL,
[Area] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
/**Normal order is filled with value from 1-100 sequentially in id**/
CREATE TABLE [dbo].[normalOrder] (
[Id]   INT          NOT NULL,
[Name] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);

create table #tempOrder
(id int)
insert into #tempOrder
Select top 10 Id
  from crazyOrder
   order by NewID()
go
Select n.*
from normalOrder n
  join #tempOrder t
  on t.id = n.id

我能够以与临时表中相同的顺序检索行(我使用数据生成器作为值)