在选择所有行进入内存之前,如何使用EF来OrderBy和SelectTop5

时间:2016-11-15 11:38:45

标签: c# entity-framework

我正在尝试选择前5行并按Id列顺序下降而不将所有行都放入内存。

我的代码:

trait AnyAccess {
  type Res[X]
  def access[Z]: Res[Z]
}

trait AnyCList extends AnyAccess { me =>
  type C
  type A
  // this could be a subtype bound instead, if needed
  type Res[X] = AnyCList { type C = X; type A = me.A }
}
case object AnyCList {
  type of[C0, +A0] = AnyCList { type C = C0; type A <: A0 }
}

case object buh {

  def test[C1, C2, A](c: AnyCList.of[C1, A]): AnyCList.of[C2, A] = c.access[C2]
}

我知道这首先将所有行放入内存并在内存中应用OrderBy和Top5规则,我相信应该有另一种方法吗?我想在将它们全部放入内存之前应用这两条规则我该怎么做?

1 个答案:

答案 0 :(得分:3)

您需要访问IQueryable并执行以下LINQ:

dbContext.OrderByDescending(d => d.Id).Take(5).ToList();

这会将LINQ表达式转换为SQL,并且只从数据库中获取相关的行。 ToList()将执行查询并将五个元素加载到内存中。