using System.Collections;
using System.Collections.Generic;
using System.Data.DataSetExtensions;
using System.Text.RegularExpressions;
using System.Xml.Serialization;
using System.Globalization;
using System.Diagnostics;
using System.Collections.Concurrent;
public static void Main(string[] args)
DataTable dt = new DataTable();
dt.Columns.Add("First Name");
dt.Columns.Add("Middle Name");
dt.Columns.Add("Last Name");
dt.Rows.Add("A3", "B3", "C3");
dt.Rows.Add("A", "B", "C");
dt.Rows.Add("A1", "B1", "C1");
dt.Rows.Add("A2", "B2", "C2");
dt.Rows.Add("A4", "B4", "C3");
var newTable = dt.AsEnumerable()
.OrderBy(x=>x.Field<string>("Last Name"))
.ThenBy(x=>x.Field<string>("First Name"))
.ThenBy(x=>x.Field<string>("Middle Name")).CopyToDataTable();
newTable.AsEnumerable().Select(x=>string.Join(",",x.ItemArray)).Dump();