public async Task Start()
        {
            using (var reader = new ChoCSVReader <CategoryModel>(Path.Combine(_options.ResourcesPath, "categories.csv"))
                                .WithFirstLineHeader())
            {
                foreach (var categoryModel in reader)
                {
                    _procuctCategories.Add(categoryModel.CategoryID, categoryModel.CategoryName);
                }
            }

            using (var reader = new ChoCSVReader <ProductModel>(Path.Combine(_options.ResourcesPath, "products.csv"))
                                .WithFirstLineHeader())
            {
                foreach (var productModel in reader)
                {
                    _procucts.Add(productModel.ProductID,
                                  $"{productModel.ProductName};{_procuctCategories[productModel.CategoryID]}");
                }
            }

            using (var reader =
                       new ChoCSVReader <SalesRowModel>(Path.Combine(
                                                            @"D:\МГТУ\Магистратура\Семестр 3\Курсач\Данные с kaggle\salesDB_grocery_market", "sales.csv"))
                       .WithFirstLineHeader())
            {
                var groupsByCustomer = reader
                                       .Where(a => a.SalesDate.HasValue)
                                       .GroupBy(a => a.CustomerID);

                var groupsByCustomerByDate = groupsByCustomer
                                             .Select(a => new
                {
                    CustomerID = a.Key,
                    Days       = a
                                 .GroupBy(b => b.SalesDate.Value.Date)
                                 .Where(d => d.Count() > 1)
                }).Where(a => a.Days.Any()).ToArray();

                foreach (var groupByCustomer in groupsByCustomerByDate)
                {
                    foreach (var groupByDate in groupByCustomer.Days)
                    {
                        await _publishEndpoint.Publish <ITransactionMessage>(new
                        {
                            Items = groupByDate.Select(a => _procucts[a.ProductID])
                        });
                    }
                }
            }
        }
Example #2
0
        static void MergeCSV()
        {
            using (var p = new ChoCSVReader("mergeinput.csv").WithFirstLineHeader())
            {
                var recs = p.Where(r => !String.IsNullOrEmpty(r.szItemId)).GroupBy(r => r.szItemId)
                           .Select(g => new
                {
                    szItemId       = g.Key,
                    szName         = g.Where(i1 => !String.IsNullOrEmpty(i1.szName)).Select(i1 => i1.szName).FirstOrDefault(),
                    lRetailStoreID = g.Where(i1 => !String.IsNullOrEmpty(i1.lRetailStoreID)).Select(i1 => i1.lRetailStoreID).FirstOrDefault(),
                    szDesc         = g.Where(i1 => !String.IsNullOrEmpty(i1.szDesc)).Select(i1 => i1.szDesc).FirstOrDefault()
                });

                using (var o = new ChoCSVWriter("mergeoutput.csv").WithFirstLineHeader())
                {
                    o.Write(recs);
                }
            }
        }