static void Main(string[] args)
        {
            Stopwatch  watch = new Stopwatch();
            MyDatabase db    = new MyDatabase();

            var myList = new List <TShirt>(db.TShirts);

            Console.WriteLine("Unsorted list: \n");

            foreach (var item in myList)
            {
                item.Output();
            }


            #region QUICK SORT
            //Ascending Size
            watch.Restart();
            QuickSort.SortTShirts(myList);
            Console.WriteLine("\nSorted List with Quick Sort Size Ascending: \n");
            foreach (var item in myList)
            {
                item.Output();
            }

            watch.Stop();
            Console.WriteLine("Time: {0:F3}", watch.ElapsedMilliseconds);

            //Descending Size
            watch.Restart();
            QuickSort.SortTShirtsDesc(myList);
            Console.WriteLine("\nSorted List with Quick Sort Size Descending \n");
            foreach (var item in myList)
            {
                item.Output();
            }

            watch.Stop();
            Console.WriteLine("Time: {0:F3}", watch.ElapsedMilliseconds);
            #endregion

            #region BUBBLE SORT
            //Ascending Color
            watch.Restart();
            BubbleSort.SortTShirtsColor(myList);
            Console.WriteLine("\nSorted List with Bubble Sort Color Asc: \n");
            foreach (var item in myList)
            {
                item.Output();
            }

            watch.Stop();
            Console.WriteLine("Time: {0:F3}", watch.ElapsedMilliseconds);

            //Descending Color
            watch.Restart();
            BubbleSort.SortTShirtsColorDesc(myList);
            Console.WriteLine("\nSorted List with Bubble Sort Color Desc: \n");
            foreach (var item in myList)
            {
                item.Output();
            }

            watch.Stop();
            Console.WriteLine("Time: {0:F3}", watch.ElapsedMilliseconds);
            #endregion

            #region BUCKET SORT
            //Ascending Fabric
            watch.Restart();
            var sortedListBucket = BucketSort.SortTShirtsFabric(myList);
            Console.WriteLine("\nSorted List with Bucket Sort Fabric Asc: \n");
            foreach (var item in sortedListBucket)
            {
                item.Output();
            }

            watch.Stop();
            Console.WriteLine("Time: {0:F3}", watch.ElapsedMilliseconds);

            //Descending Fabric
            watch.Restart();
            var sortedListBucketDesc = BucketSort.SortTShirtsFabricDesc(myList);
            sortedListBucket.Reverse();
            Console.WriteLine("\nSorted List with Bucket Sort Fabric Desc: \n");
            foreach (var item in sortedListBucket)
            {
                item.Output();
            }

            watch.Stop();
            Console.WriteLine("Time: {0:F3}", watch.ElapsedMilliseconds);
            #endregion

            #region SORT BY MULTIPLE CRITERIA
            //Ascending
            IEnumerable <TShirt> tShirts = db.TShirts
                                           .OrderBy(t => t.Size)
                                           .ThenBy(t => t.Color)
                                           .ThenBy(t => t.Fabric);

            Console.WriteLine("\nSorted List by Size and Color and Fabric Asc: \n");
            foreach (var item in tShirts)
            {
                item.Output();
            }

            //Descending
            IEnumerable <TShirt> tShirts2 = db.TShirts
                                            .OrderByDescending(t => t.Size)
                                            .ThenByDescending(t => t.Color)
                                            .ThenByDescending(t => t.Fabric);

            Console.WriteLine("\nSorted List by Size and Color and Fabric Desc: \n");
            foreach (var item in tShirts2)
            {
                item.Output();
            }
            #endregion
        }