Tip
All examples used are valid against the Microsoft Northwind Sample Database You can run the resulting SQL from the examples against Northwind in order to test and play with the SqlObjects library.
ORDER BY¶
ORDER BY a Single Column ASC
var sql = TSQL
.SELECT()
.COLUMN("EmployeeID")
.COLUMN("FirstName")
.COLUMN("LastName")
.COLUMN("Title")
.COLUMN("HireDate")
.FROM("Employees")
.ORDERBY("LastName").ASC()
.Build()
;
Console.WriteLine(sql);
Output:
SELECT
[EmployeeID],
[FirstName],
[LastName],
[Title],
[HireDate]
FROM [Employees]
ORDER BY
[LastName] ASC
ORDER BY a Single Column DESC
var sql = TSQL
.SELECT()
.COLUMN("EmployeeID")
.COLUMN("FirstName")
.COLUMN("LastName")
.COLUMN("Title")
.COLUMN("HireDate")
.FROM("Employees")
.ORDERBY("HireDate").DESC()
.Build()
;
Console.WriteLine(sql);
Output:
SELECT
[EmployeeID],
[FirstName],
[LastName],
[Title],
[HireDate]
FROM [Employees]
ORDER BY
[HireDate] DESC
ORDER BY a Single Column ASC Using the .COLUMN()
Method
var sql = TSQL
.SELECT()
.COLUMN("EmployeeID")
.COLUMN("FirstName")
.COLUMN("LastName")
.COLUMN("Title")
.COLUMN("HireDate")
.FROM("Employees")
.ORDERBY()
.COLUMN("LastName").ASC()
.Build()
;
Console.WriteLine(sql);
Output:
SELECT
[EmployeeID],
[FirstName],
[LastName],
[Title],
[HireDate]
FROM [Employees]
ORDER BY
[LastName] ASC
ORDER BY a Multiple Columns
var sql = TSQL
.SELECT()
.COLUMN("EmployeeID")
.COLUMN("FirstName")
.COLUMN("LastName")
.COLUMN("Title")
.COLUMN("HireDate")
.FROM("Employees")
.ORDERBY()
.COLUMN("HireDate").DESC()
.COLUMN("LastName").ASC()
.Build()
;
Console.WriteLine(sql);
Output:
SELECT
[EmployeeID],
[FirstName],
[LastName],
[Title],
[HireDate]
FROM [Employees]
ORDER BY
[HireDate] DESC,
[LastName] ASC
ORDER BY an Object Collection
You can pass the .ORDERBY()
method a collection of ISqlOrderByExpression
objects, which
can be useful for automation purposes. This requires the following steps.
Wrap an
ISqlColumn
object in anISqlOrderByExpression
object by adding the column object to the order by expression object’sChildren
collection.Add the
ISqlOrderExpression
object to a collectionPass the collection of
ISqlOrderExpression
objects to the.ORDERBY()
method
See the example below.
using System;
using System.Collections.Generic;
using System.Data;
using KnightMoves.SqlObjects;
using KnightMoves.SqlObjects.SqlCode;
using KnightMoves.SqlObjects.SqlCode.TSQL;
var orderByExpression1 = new TSQLOrderByExpression { Direction = SqlOrderByDirections.DESC };
var orderByExpression2 = new TSQLOrderByExpression { Direction = SqlOrderByDirections.ASC };
orderByExpression1.Children.Add(new TSQLColumn { ColumnName = "HireDate" });
orderByExpression2.Children.Add(new TSQLColumn { ColumnName = "LastName" });
var orderByExpressions = new List<ISqlOrderByExpression>
{
orderByExpression1,
orderByExpression2
};
var sql = TSQL
.SELECT()
.COLUMN("EmployeeID")
.COLUMN("FirstName")
.COLUMN("LastName")
.COLUMN("Title")
.COLUMN("HireDate")
.FROM("Employees")
.ORDERBY(orderByExpressions)
.Build()
;
Console.WriteLine(sql);
Output:
SELECT
[EmployeeID],
[FirstName],
[LastName],
[Title],
[HireDate]
FROM [Employees]
ORDER BY
[HireDate] DESC,
[LastName] ASC