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.