//PDFGenerator.GeneratePDF(); static void ProductReportsToJsonAndMongo() { ParadiseSupermarketChainEntities sqlCon = new ParadiseSupermarketChainEntities(); var query = from product in sqlCon.Products join vendor in sqlCon.Vendors on product.VendorId equals vendor.Id join sale in sqlCon.Sales on product.Id equals sale.ProductId join date in sqlCon.Dates on sale.DateId equals date.Id orderby product.Id select new { Id = product.Id, Name = product.Name, Quantity = sale.Quantity, Sum = sale.Sum, VendorName = vendor.Name, Date = date.Date }; Dictionary<int, Tuple<string, int, decimal, string, DateTime>> collection = new Dictionary<int, Tuple<string, int, decimal, string, DateTime>>(); foreach (var item in query) { if (!collection.ContainsKey(item.Id)) { collection.Add(item.Id, new Tuple<string, int, decimal, string, DateTime>((string)item.Name, (int)item.Quantity, (decimal)item.Sum, (string)item.VendorName, (DateTime)item.Date)); continue; } int newQuantity = collection[item.Id].Item2 + (int)item.Quantity; decimal newSum = collection[item.Id].Item3 + item.Sum; collection[item.Id] = new Tuple<string, int, decimal, string, DateTime>((string)item.Name, newQuantity, newSum, (string)item.VendorName, (DateTime)item.Date); } foreach (var item in collection) { JSON.Extract(item.Key, item.Value.Item1, item.Value.Item4, item.Value.Item2, item.Value.Item3); MongoWriter mongoWriter = new MongoWriter("Products"); mongoWriter.WriteProduct(item.Key, item.Value.Item1, item.Value.Item4, item.Value.Item2, item.Value.Item3, item.Value.Item5); } }