【问题标题】:Linq get records based by in clause and sort byLinq 根据 in 子句获取记录并排序
【发布时间】:2016-09-23 17:27:25
【问题描述】:

我已将排序的 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

【问题讨论】:

  • 我怀疑在数据库中执行此操作会很棘手...但是您可以在收到结果后执行此操作。你甚至可以打电话给ToDictionary(i => i.ContentPageId),这样你就可以通过页码访问。

标签: linq


【解决方案1】:

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

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();

【讨论】:

  • 谢谢!您将 int[] 数组转换为列表有什么原因吗?不这样做似乎可以工作?
  • 这太谨慎了,我把它退回了:)
猜你喜欢
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多