public List <CategoryOrderReport> GetReportByCategory(List <string> categoryList, List <string> lstDateTimeString)
        {
            var         test     = context.OrderDetails.Where(x => categoryList.Contains(x.Item.Category.CategoryName) && lstDateTimeString.Contains(x.Order.OrderDate.ToString().Substring(0, 7))).ToList();
            List <Temp> tempList = context.OrderDetails.Where(x => categoryList.Contains(x.Item.Category.CategoryName) && lstDateTimeString.Contains(x.Order.OrderDate.ToString().Substring(0, 7)))
                                   .GroupBy(x => new
            {
                id   = x.Item.Category.CategoryId,
                date = x.Order.OrderDate.ToString().Substring(0, 7)
            }).ToList()
                                   .Select(y => new Temp
            {
                OrderDate    = y.Select(a => Convert.ToDateTime(a.Order.OrderDate)).FirstOrDefault(),
                QuantitySum  = y.Sum(z => z.Order_Quantity),
                CategoryName = y.Select(z => z.Item.Category.CategoryName).FirstOrDefault()
            }).ToList <Temp>();

            foreach (Temp t in tempList)
            {
                CategoryOrderReport categoryOrderReport = new CategoryOrderReport();
                categoryOrderReport.OrderDate = t.OrderDate;
                switch (t.CategoryName)
                {
                case "Clip": categoryOrderReport.Clip = t.QuantitySum; break;

                case "Envelope": categoryOrderReport.Envelope = t.QuantitySum; break;

                case "Eraser": categoryOrderReport.Eraser = t.QuantitySum; break;

                case "Exercise": categoryOrderReport.Exercise = t.QuantitySum; break;

                case "File": categoryOrderReport.File = t.QuantitySum; break;

                case "Pen": categoryOrderReport.Pen = t.QuantitySum; break;

                case "Puncher": categoryOrderReport.Puncher = t.QuantitySum; break;

                case "Pad": categoryOrderReport.Pad = t.QuantitySum; break;

                case "Paper": categoryOrderReport.Paper = t.QuantitySum; break;

                case "Ruler": categoryOrderReport.Ruler = t.QuantitySum; break;

                case "Scissors": categoryOrderReport.Scissors = t.QuantitySum; break;

                case "Tape": categoryOrderReport.Tape = t.QuantitySum; break;

                case "Sharpener": categoryOrderReport.Sharpener = t.QuantitySum; break;

                case "Shorthand": categoryOrderReport.Shorthand = t.QuantitySum; break;

                case "Stapler": categoryOrderReport.Stapler = t.QuantitySum; break;

                case "Tacks": categoryOrderReport.Tacks = t.QuantitySum; break;

                case "Tparency": categoryOrderReport.Tparency = t.QuantitySum; break;

                case "Tray": categoryOrderReport.Tray = t.QuantitySum; break;

                default: break;
                }
                if (categoryOrderReportList.Count == 0)
                {
                    categoryOrderReportList.Add(categoryOrderReport);
                }
                else
                {
                    CheckDuplicateDate(categoryOrderReport);
                }
            }


            return(categoryOrderReportList);
        }
 public void CheckDuplicateDate(CategoryOrderReport categrory)
 {
     foreach (CategoryOrderReport c1 in categoryOrderReportList.ToList())
     {
         if (c1.OrderDate.Equals(categrory.OrderDate))
         {
             if (categrory.Clip != 0)
             {
                 c1.Clip = categrory.Clip;
             }
             if (categrory.Envelope != 0)
             {
                 c1.Envelope = categrory.Envelope;
             }
             if (categrory.Eraser != 0)
             {
                 c1.Eraser = categrory.Eraser;
             }
             if (categrory.Exercise != 0)
             {
                 c1.Exercise = categrory.Exercise;
             }
             if (categrory.File != 0)
             {
                 c1.File = categrory.File;
             }
             if (categrory.Pen != 0)
             {
                 c1.Pen = categrory.Pen;
             }
             if (categrory.Puncher != 0)
             {
                 c1.Puncher = categrory.Puncher;
             }
             if (categrory.Pad != 0)
             {
                 c1.Pad = categrory.Pad;
             }
             if (categrory.Paper != 0)
             {
                 c1.Paper = categrory.Paper;
             }
             if (categrory.Ruler != 0)
             {
                 c1.Ruler = categrory.Ruler;
             }
             if (categrory.Scissors != 0)
             {
                 c1.Scissors = categrory.Scissors;
             }
             if (categrory.Tape != 0)
             {
                 c1.Tape = categrory.Tape;
             }
             if (categrory.Sharpener != 0)
             {
                 c1.Sharpener = categrory.Sharpener;
             }
             if (categrory.Shorthand != 0)
             {
                 c1.Shorthand = categrory.Shorthand;
             }
             if (categrory.Stapler != 0)
             {
                 c1.Stapler = categrory.Stapler;
             }
             if (categrory.Tacks != 0)
             {
                 c1.Tacks = categrory.Tacks;
             }
             if (categrory.Tparency != 0)
             {
                 c1.Tparency = categrory.Tparency;
             }
             if (categrory.Tray != 0)
             {
                 c1.Tray = categrory.Tray;
             }
         }
         else
         {
             categoryOrderReportList.Add(categrory);
         }
     }
 }