Table of Contents

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.