2012-12-12 119 views
2

这就是我想要达到的目标:实体框架,随机查询分页

  1. 我要查询我的数据库返回的实体列表
  2. 随机化列表
  3. 商店物品的IDS收到以供将来查询
  4. 在ID已存储在列表中的同一张表上运行一个新查询
  5. 按我已存储的列表排序。

我已经设法实现了第1,2,3,4步,但第5步很困难。谁能帮我用像这样的查询:提前

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

感谢

回答

0

尝试

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

非常感谢您对此的意见,我现在必须将此翻译成linq以实现或lambda,但无论如何感谢。 – maaizle

0

我测试了正常的连接(相等加盟)应该做的伎俩,这里是样本方法:

/**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 

我能够以临时表中相同的顺序检索行(我用一个数据生成器的值es)

+0

谢谢你,我发现了一个更简单的方法来做到这一点。但我很欣赏这一点 – maaizle