OxL Справочник OxL
РусскийEnglish

5.9 Выражения запросов

oxl
let top = from o in db.Order
  where o.userId == uid && o.total > MIN_TOTAL
  order by o.createdAt desc
  skip page * PAGE_SIZE
  take PAGE_SIZE
  load(items)

let names = from u in users where u.active select u.name   // List в памяти
let byRole = from u in users group by u.role into g select (g.key, g.count())
  • Форма: from x in источник (where e)* (order by e (asc|desc)?, …)? (group by e into g)? (skip e)? (take e)? (load(поле, …))? (select e)?.
  • Источник Table<T> (§12.8): запрос компилируется в SQL при сборке, выполняется с эффектом db, результат — List<T> (или List<S> при select). Выражения в where/order by ДОЛЖНЫ транслироваться в SQL: поля, литералы, параметры, арифметика, сравнения, in, && || !, starts_with, contains, lower; иначе — ошибка компиляции.
  • Любой другой источник Iterable<T>: запрос вычисляется в памяти и возвращает iter<T> (ленивый).

query-not-sql

См. также

Исходник: docs/spec/oxl-standard.md