コード例 #1
0
        //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);
            }
        }