> byte[] ticksAsBytes = BitConverter.GetBytes(DateTime.Now.Ticks); > Array.Reverse(ticksAsBytes); > int increment = Interlocked.Increment(ref guidCounter); > byte[] currentAsBytes = BitConverter.GetBytes(increment); > Array.Reverse(currentAsBytes); > byte[] bytes = new byte[16]; > Array.Copy(ticksAsBytes, 0, bytes, 0, ticksAsBytes.Length); > Array.Copy(currentAsBytes, 0, bytes, 12, currentAsBytes.Length); > Array.Copy(GuidUtil.machineId, 0, bytes, 8, machineId.Length); > > //return bytes.TransfromToGuidWithProperSorting(); > > return new Guid(bytes); >>Source: http://ayende.com/blog/4643/createsequetialuuid-answer