Linq根据in子句获取记录并按排序

Linq根据in子句获取记录并按排序,linq,Linq,我已将ID的排序列表持久化到数据库中。现在,我想根据持久化id取回记录 但是,这些记录是按照主键的顺序返回的,而不是按照我保存的int[]的顺序返回的。我不太清楚这是怎么实现的 我目前有以下情况: int[] ids = {8, 1, 5}; var items = from i in ContentPage.All() where ids.Contains(i.ContentPageId) select i; 目前,记录是按1,5,8的顺序出

我已将ID的排序列表持久化到数据库中。现在,我想根据持久化id取回记录

但是,这些记录是按照主键的顺序返回的,而不是按照我保存的int[]的顺序返回的。我不太清楚这是怎么实现的

我目前有以下情况:

int[] ids = {8, 1, 5};

var items = from i in ContentPage.All()
            where ids.Contains(i.ContentPageId)
            select i;

目前,记录是按1,5,8的顺序出现的,实际上我想要的是8,1,5

数据库没有义务按特定顺序返回项目。然后,您可以这样处理它们:

int[] ids = {8, 1, 5};
var items = (from i in ContentPage.All()
            where ids.Contains(i.ContentPageId)
            select i).ToList();

var answer = (from id in ids
             join item in items
             on id equals item.ContentPageId
             select item).ToList();

我怀疑在数据库中这样做会很棘手。。。但你可以在收到结果后再做。您甚至可以直接调用
ToDictionary(i=>i.ContentPageId)
,这样您就可以按页码访问了。谢谢!是否有任何原因将int[]数组转换为列表?好像没做这个就行了?这只是小心谨慎,我把它退了回来:)