我正在尝试选择前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规则,我相信应该有另一种方法吗?我想在将它们全部放入内存之前应用这两条规则我该怎么做?
答案 0 :(得分:3)
您需要访问IQueryable
并执行以下LINQ:
dbContext.OrderByDescending(d => d.Id).Take(5).ToList();
这会将LINQ表达式转换为SQL,并且只从数据库中获取相关的行。 ToList()
将执行查询并将五个元素加载到内存中。