Class OrderClause
- Namespace
- YndigoBlue.Velocity.Model
- Assembly
- YndigoBlue.Velocity.dll
Represents an ORDER BY clause that specifies how query results should be sorted.
public class OrderClause
- Inheritance
-
OrderClause
Remarks
OrderClause defines the sorting behavior for query results. Each clause specifies:
- A column, expression, or function to sort by
- The sort direction (ascending or descending)
Multiple ORDER BY clauses can be added to a Query to create multi-level sorting. The first clause is the primary sort, subsequent clauses break ties.
Examples
Simple ascending sort:
var query = new Query()
.Select([ usersTable["username"], usersTable["created_at"] ])
.From(usersTable)
.OrderBy(new OrderClause(usersTable["created_at"]));
// SQL: SELECT username, created_at FROM users ORDER BY created_at ASC
Descending sort:
var query = new Query()
.Select([ usersTable["username"], usersTable["created_at"] ])
.From(usersTable)
.OrderBy(new OrderClause(usersTable["created_at"], OrderClauseType.Descending));
// SQL: SELECT username, created_at FROM users ORDER BY created_at DESC
Multi-level sorting:
var query = new Query()
.Select([ usersTable["lastname"], usersTable["firstname"], usersTable["created_at"] ])
.From(usersTable)
.OrderBy(new OrderClause(usersTable["lastname"]))
.OrderBy(new OrderClause(usersTable["firstname"]))
.OrderBy(new OrderClause(usersTable["created_at"], OrderClauseType.Descending));
// SQL: SELECT lastname, firstname, created_at FROM users
// ORDER BY lastname ASC, firstname ASC, created_at DESC
Sorting by expression:
// Create an expression: quantity * price
Expression totalExpression = new Expression("total");
totalExpression.Add(ordersTable["quantity"]);
totalExpression.Add(new ArithmeticOperator(ArithmeticType.Multiply));
totalExpression.Add(ordersTable["price"]);
var query = new Query()
.Select([ ordersTable["id"], totalExpression ])
.From(ordersTable)
.OrderBy(new OrderClause(totalExpression, OrderClauseType.Descending));
// SQL: SELECT id, quantity * price AS total FROM orders ORDER BY total DESC
Sorting by aggregate function:
var countExpr = new Expression("order_count", new Count(ordersTable["id"]));
var query = new Query()
.Select([ ordersTable["user_id"], countExpr ])
.From(ordersTable)
.GroupBy(ordersTable["user_id"])
.OrderBy(new OrderClause(countExpr, OrderClauseType.Descending));
// SQL: SELECT user_id, COUNT(id) AS order_count FROM orders
// GROUP BY user_id ORDER BY COUNT(id) DESC
Constructors
- OrderClause(ISelectItem)
Creates a new ORDER BY clause with ascending sort order.
- OrderClause(ISelectItem, OrderClauseType)
Creates a new ORDER BY clause with specified sort order.
Properties
- OrderType
Gets or sets the sort direction (Ascending or Descending).
- SelectItem
Gets or sets the column, expression, or function to sort by.