【问题标题】:Get list of entities by list of id's - IN ORDER通过 id 列表获取实体列表 - IN ORDER
【发布时间】:2021-04-09 16:57:48
【问题描述】:

查看此问题/答案:Entity Framework: Get all rows from the table for the ids in list

现在我的问题是:我想让实体按照它们在 id 列表中的顺序排序。

我会处理一个小列表,不介意从数据库中提取列表后是否在内存中排序。

【问题讨论】:

  • 您需要选择一个属性作为排序依据,并将其作为 lambda 表达式传递给 OrderByDescending,例如:.OrderByDescending(x => x.Delivery.SubmissionDate);
  • 按整数排序? OrderBy 应该可以解决问题
  • 我想按照项目在id列表中的顺序排序。

标签: linq entity-framework


【解决方案1】:
var result = db.table
  .Where(l => ids.Any(id => id == l.id))
  .ToList()
  .OrderBy(l => ids.IndexOf(l.id));

var result = db.table
  .Where(l => ids.Contains(l.id))
  .ToList()
  .OrderBy(l => ids.IndexOf(l.id));

两者都应该可以正常工作。

【讨论】:

  • 谢谢。如果它可以在数据库中排序,现在可以获得奖励;)
  • 它可以在数据库中排序,但是性能太差了,我不打算展示它并让其他人复制并使用它。
  • 这对INT列表中的项目数量有限制吗?我可以传递 2000 个 id 值的列表并进行这样的调用吗?
  • 这可能取决于您使用的 EF 版本。我会用 2200 进行测试
最近更新 更多