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

Examples

Simple ascending sort:

Query query = new Query();
query.AddFromItem(usersTable);
query.AddSelectItem(usersTable["username"]);
query.AddSelectItem(usersTable["created_at"]);

// ORDER BY created_at ASC (default)
query.AddOrderClause(new OrderClause(usersTable["created_at"]));

// SQL: SELECT username, created_at FROM users ORDER BY created_at ASC

Descending sort:

// ORDER BY created_at DESC
query.AddOrderClause(new OrderClause(
    usersTable["created_at"],
    OrderClauseType.Descending
));

// SQL: SELECT username, created_at FROM users ORDER BY created_at DESC

Multi-level sorting:

Query query = new Query();
query.AddFromItem(usersTable);
query.AddSelectItem(usersTable["lastname"]);
query.AddSelectItem(usersTable["firstname"]);
query.AddSelectItem(usersTable["created_at"]);

// ORDER BY lastname ASC, firstname ASC, created_at DESC
query.AddOrderClause(new OrderClause(usersTable["lastname"]));
query.AddOrderClause(new OrderClause(usersTable["firstname"]));
query.AddOrderClause(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"]);

query.AddSelectItem(totalExpression);

// ORDER BY total DESC
query.AddOrderClause(new OrderClause(
    totalExpression,
    OrderClauseType.Descending
));

// SQL: SELECT quantity * price AS total FROM orders ORDER BY total DESC

Sorting by aggregate function:

Query query = new Query();
query.AddFromItem(ordersTable);
query.AddSelectItem(ordersTable["user_id"]);

Function countFunction = new Function(FunctionType.Count, ordersTable["id"]);
query.AddSelectItem(countFunction);
query.AddGroupClause(ordersTable["user_id"]);

// ORDER BY COUNT(id) DESC
query.AddOrderClause(new OrderClause(
    countFunction,
    OrderClauseType.Descending
));

// SQL: SELECT user_id, COUNT(id) FROM orders
//      GROUP BY user_id ORDER BY COUNT(id) DESC

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.

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.