using System.Collections.Generic;
using System.Data.SqlTypes;
public static void Main() {
Console.WriteLine("Little Endian? {0}", BitConverter.IsLittleEndian);
Console.WriteLine("Demonstrate x86 DWORD byte order");
var bytes = BitConverter.GetBytes((int)0);
var intValue = BitConverter.ToInt32(bytes, 0);
Console.WriteLine(" Decimal value: {0}", intValue);
Console.WriteLine(" Hex value: {0}", String.Format( "{0:X8}", intValue));
var testList = new List<SqlGuid>();
Console.WriteLine("\r\nProving that byte F is sorted before byte 9");
testList.Add(new SqlGuid("00000000-0000-0000-0002-000000000001"));
testList.Add(new SqlGuid("00000000-0000-0000-0001-000000000002"));
Console.WriteLine("\r\nProving that byte F is sorted before byte 8");
testList.Add(new SqlGuid("00000000-0000-0000-0200-000000000001"));
testList.Add(new SqlGuid("00000000-0000-0000-0100-000000000002"));
Console.WriteLine("\r\nProving that byte 7 is sorted before byte 8");
testList.Add(new SqlGuid("00000000-0000-0000-0201-000000000001"));
testList.Add(new SqlGuid("00000000-0000-0000-0102-000000000001"));
Console.WriteLine("\r\nProving that byte A is sorted bfeore byte F");
testList.Add(new SqlGuid("00000000-0000-0000-0000-300000000001"));
testList.Add(new SqlGuid("00000000-0000-0000-0000-200000000002"));
testList.Add(new SqlGuid("00000000-0000-0000-0000-100000000003"));
testList.Add(new SqlGuid("00000000-0000-0000-0000-000000000004"));
var guidList = new List<Guid>();
for(var i = 0; i<=15; i++) {
b[i] = (byte)(i==0 ? 0x42 : (i << 4 | i));
guidList.Add(new Guid(b));
Console.WriteLine("Byte order:");
foreach (var guidValue in guidList) {
Console.WriteLine(" {0}", guidValue.ToString().Replace("0", "_"));
testList.Add(new SqlGuid(guidValue));
Console.WriteLine("Guid Sort (string order, i.e., leftmost digits are bigger):");
foreach (var guidSorted in guidList) {
Console.WriteLine(" {0}", guidSorted.ToString().Replace("0", "_"));
Console.WriteLine("MSSQL/SqlGuids Sort (BYTES A-F, BYTES 8-9, WORD2, WORD1, DWORD):");
static void PrintList(List<SqlGuid> list) {
foreach (var v in list) {
Console.WriteLine(" {0}", v.ToString().Replace("0", "_"));