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]) }); } } } }
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); } } }