public static int? GetVendorIdByName(string vendorName) { var context = new SupermarketContext(); var vendorId = context.Vendors.FirstOrDefault(v => v.VendorName == vendorName).Id; return vendorId; }
public static int? GetMeasureIdByName(string measureName) { var context = new SupermarketContext(); var measureId = context.Measures.FirstOrDefault(m => m.MeasureName == measureName).Id; return measureId; }
public static int? GetSupermarketIdByName(string supermarketName) { var context = new SupermarketContext(); var supermarketId = context.Supermarkets.FirstOrDefault(s => s.Name == supermarketName).SupermarketId; return supermarketId; }
public static int?GetTypeIdByName(string typeName) { var context = new SupermarketContext(); var typeId = context.ProductTypes.FirstOrDefault(pt => pt.TypeName == typeName).Id; return(typeId); }
public static int? GetTypeIdByName(string typeName) { var context = new SupermarketContext(); var typeId = context.ProductTypes.FirstOrDefault(pt => pt.TypeName == typeName).Id; return typeId; }
public static int?GetMeasureIdByName(string measureName) { var context = new SupermarketContext(); var measureId = context.Measures.FirstOrDefault(m => m.MeasureName == measureName).Id; return(measureId); }
public static int?GetVendorIdByName(string vendorName) { var context = new SupermarketContext(); var vendorId = context.Vendors.FirstOrDefault(v => v.VendorName == vendorName).Id; return(vendorId); }
public static int?GetProductIdByName(string productName) { var context = new SupermarketContext(); var productId = context.Products.FirstOrDefault(p => p.ProductName == productName).Id; return(productId); }
public static List<VendorExpense> ReadFileXML(string path) { List<VendorExpense> readedVendorsExpense = new List<VendorExpense>(); using (XmlReader reader = XmlReader.Create(path)) { while (reader.Read()) { if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "sale")) { var newVendor = new VendorExpense(); var name = reader.GetAttribute("vendor"); var dbCobntext = new SupermarketContext(); var vendor = dbCobntext.Vendors.FirstOrDefault(x => x.Name == name); newVendor.Vendor = vendor; reader.Read(); reader.Read(); while ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "expenses")) { var month = reader.GetAttribute("month"); DateTime vendorMonth = DateTime.ParseExact(month, "MMM-yyyy", CultureInfo.InvariantCulture); var sum = reader.ReadElementString(); newVendor.Date = vendorMonth; newVendor.MonthExpense = decimal.Parse(sum, CultureInfo.InvariantCulture); reader.Read(); readedVendorsExpense.Add(newVendor); newVendor = new VendorExpense(); newVendor.Vendor = vendor; } } } return readedVendorsExpense; } }
public static int? GetProductIdByName(string productName) { var context = new SupermarketContext(); var productId = context.Products.FirstOrDefault(p => p.ProductName == productName).Id; return productId; }
public static void GenerateJSONReports() { Console.WriteLine("Enter start date in format \'YYYY-MM-DD\': "); string startDateInput = Console.ReadLine(); Console.WriteLine("Enter end date in format \'YYYY-MM-DD\': "); string endDateInput = Console.ReadLine(); Console.WriteLine("Processing data......."); try { DateTime startDate = DateTime.Parse(startDateInput); DateTime endDate = DateTime.Parse(endDateInput); if (startDate > endDate) { throw new ArgumentException("End date must be after start date!"); } var mssqlData = new SupermarketContext(); var jsSerializaer = new JavaScriptSerializer(); var sales = mssqlData.SupermarketSalesProducts.Where(s => s.SalesDate >= startDate && s.SalesDate <= endDate) .Select( s => new { productId = s.ProductId, productName = s.Product.ProductName, vendorName = s.Product.Vendor.VendorName, totalQuantitySold = s.Quantity, totalIncomes = s.Quantity * s.Product.Price }) .ToList(); Console.WriteLine("Sending data to MongoDB....."); foreach (var sale in sales) { var jsonReport = jsSerializaer.Serialize(sale); SaveDataInMongoDb(jsonReport); if (!File.Exists(JsonReportPath + sale.productId + ".json")) { File.WriteAllText(JsonReportPath + sale.productId + ".json", jsonReport); } } } catch (Exception) { Console.WriteLine("Invalid input"); } Console.WriteLine("JSON reports generated."); DirectoryInfo directoryInfo = new DirectoryInfo(JsonReportPath); Console.WriteLine("Directory: {0}", directoryInfo.FullName); foreach (var file in directoryInfo.GetFiles()) { Console.WriteLine("File: {0}", file.Name); } Console.WriteLine("JSON reports were imported successfully."); }
public static int?GetSupermarketIdByName(string supermarketName) { var context = new SupermarketContext(); var supermarketId = context.Supermarkets.FirstOrDefault(s => s.Name == supermarketName).SupermarketId; return(supermarketId); }
static void Main() { using (var context = new SupermarketContext()) { var customers = context.Customers.Count(); Console.WriteLine(customers); } }
private List<ProductReport> GetProductReports() { using (SupermarketContext context = new SupermarketContext()) { List<ProductReport> productReports = new List<ProductReport>(); productReports = context.Database.SqlQuery<ProductReport>(ProductReportQuery).ToList(); return productReports; } }
public void MigrateDataFromMySqlToSqlServer() { using (var supermarketContextSqlServer = new SupermarketContext()) { using (var supermarketContextMySql = new SupermarketModel()) { foreach (var measureMySql in supermarketContextMySql.Measures) { if (!supermarketContextSqlServer.Measures .Any(m => m.MeasureName == measureMySql.MeasureName)) { supermarketContextSqlServer.Measures.Add(new Models.Measure() { MeasureName = measureMySql.MeasureName }); } } foreach (var vendorMySql in supermarketContextMySql.Vendors) { if (!supermarketContextSqlServer.Vendors .Any(v => v.VendorName == vendorMySql.VendorName)) { supermarketContextSqlServer.Vendors.Add(new Models.Vendor() { VendorName = vendorMySql.VendorName }); } } supermarketContextSqlServer.SaveChanges(); foreach (var productMySql in supermarketContextMySql.Products) { if (!supermarketContextSqlServer.Products .Any(p => p.Name == productMySql.ProductName)) { var vendorSqlServer = supermarketContextSqlServer.Vendors .First(v => v.VendorName == productMySql.Vendor.VendorName); var measureSqlServer = supermarketContextSqlServer.Measures .First(m => m.MeasureName == productMySql.Measure.MeasureName); supermarketContextSqlServer.Products.Add(new Models.Product() { BasePrice = productMySql.BasePrice, Name = productMySql.ProductName, Measure = measureSqlServer, Vendor = vendorSqlServer, }); } } } supermarketContextSqlServer.SaveChanges(); } }
private static void FromMySqlNeverAgain() { var dbcontext = new SupermarketContext(); var mySqlContx = new SupermarketModel(); using (mySqlContx) { var products = mySqlContx.Products.OrderBy(e => e.ID).ToList(); var vendors = mySqlContx.Vendors.ToList(); var mesuares = mySqlContx.Measures.ToList(); using (dbcontext) { foreach (var mesuare in mesuares) { var newMeasure = new Measure() { ID = mesuare.ID, Name = mesuare.Name }; dbcontext.Measures.Add(newMeasure); } foreach (var vendor in vendors) { var newVendor = new Vendor() { ID = vendor.ID, Name = vendor.Name }; dbcontext.Vendors.Add(newVendor); } foreach (var product in products) { var some = new Product { BasePrice = product.BasePrice, Measure_ID = product.Measure_ID, Name = product.Name, Vendor_ID = product.Vendor_ID, }; dbcontext.Products.Add(some); } dbcontext.SaveChanges(); } } }
///<summary> ///This is summary for method that transfer records from Oracle model into MQ SQL Server model. ///The method first select records from Oracle model which have not yet been copied or deleted. ///Second it inserts record into MS SQL Method and mark them as copied into Oracle model ///</summary> public static void UpdateMeasuresFromOracle() { var oracleContext = new OracleEntities(); var msSqLcontext = new SupermarketContext(); var measures = oracleContext.MEASURES .Where(m => m.ISCOPIED == false && m.ISDELETED == false) .Select(m => new { m.MEASURENAME }).ToList(); if (measures.Count > 0) { var addedMeasuresList = new List<string>(); foreach (var measure in measures) { var measureName = measure.MEASURENAME; try { msSqLcontext.Measures.AddOrUpdate( m => m.MeasureName, new Measure() { MeasureName = measureName }); msSqLcontext.SaveChanges(); addedMeasuresList.Add(measureName); } catch (Exception ex) { throw new ArgumentException(); } } var measuresToChange = oracleContext.MEASURES.Where(m => addedMeasuresList.Contains(m.MEASURENAME)).ToList(); measuresToChange.ForEach(m => m.ISCOPIED = true); oracleContext.SaveChanges(); Console.WriteLine("\nAdded new Measures from OracleBD into MS SQL Server:"); measuresToChange.ForEach(m => Console.WriteLine("Added measure name: {0}", m.MEASURENAME)); } else { Console.WriteLine("\nThere is no new records to import into MEASURES table!"); } }
private static void GenerateJSONReports() { Console.WriteLine("Enter start date in format \'YYYY-MM-DD\': "); string startDateInput = Console.ReadLine(); Console.WriteLine("Enter end date in format \'YYYY-MM-DD\': "); string endDateInput = Console.ReadLine(); try { DateTime startDate = DateTime.Parse(startDateInput); DateTime endDate = DateTime.Parse(endDateInput); if (startDate > endDate) { throw new ArgumentException("End date must be after start date!"); } var mssqlData = new SupermarketContext(); var jsSerializaer = new JavaScriptSerializer(); var sales = mssqlData.Sales.Where(s => s.SoldDate >= startDate && s.SoldDate <= endDate) .Select( s => new { productId = s.ProductId, productName = s.Product.ProductName, vendorName = s.Product.Vendor.VendorName, totalQuantitySold = s.Quantity, totalIncomes = s.Quantity * s.Product.Price }) .ToList(); foreach (var sale in sales) { var jsonReport = jsSerializaer.Serialize(sale); SaveDataInMongoDb(jsonReport); if (!File.Exists(JsonReportPath + sale.productId + ".json")) { File.WriteAllText(JsonReportPath + sale.productId + ".json", jsonReport); } } } catch (Exception) { Console.WriteLine("Invalid input"); } }
private static void FillExpensesInSql(ICollection<Expense> expenses) { SupermarketContext context = new SupermarketContext(); using (context) { foreach (var expense in expenses) { context.Expenses.Add(expense); } context.SaveChanges(); } Console.WriteLine("5. Expenses saved in SQL Server!"); }
/// <summary> /// Load the zipped files with the excel reports. /// </summary> /// <param name="context">The context relationship with the Entity framework and the database</param> public void LoadExelReports(SupermarketContext context) { DirectoryInfo directoryInfo = new DirectoryInfo(this.FilePath); Console.WriteLine(@" Loading Exel Reports To MsSqlDB ------------------------------------------------"); Console.WriteLine("Extracting data from file {0}", directoryInfo.FullName); string tempFolder = string.Format("{0}{1}", Directory.GetCurrentDirectory(), TempFolderName); string currentReportDate = string.Empty; using (ZipArchive archive = ZipFile.OpenRead(this.FilePath)) { foreach (ZipArchiveEntry entry in archive.Entries) { if (entry.FullName.EndsWith("/", StringComparison.OrdinalIgnoreCase)) { //Gets from the folders the date in which the reports are made currentReportDate = entry.FullName.TrimEnd('/'); } else { if (!Directory.Exists(tempFolder)) { Directory.CreateDirectory(tempFolder); } //extract the readed file always into this "temporary" file entry.ExtractToFile(Path.Combine(tempFolder, TempFileName), true); DataTable excelData = this.ReadExcelData(string.Format("{0}{1}", tempFolder, TempFileName)); DataRowCollection arrExelData = excelData.Rows; string marketName = this.SupermarketName(arrExelData[0].ItemArray); this.CheckForExistingSupermarket(arrExelData[0].ItemArray, context); //The loop starts from 2, because of the cell formatting in the excel file, if the loop starts form 0 it will iterate trough array full of empty strings for (int i = 2; i < arrExelData.Count-1; i++) { InsertIntoDataBase(arrExelData[i].ItemArray,context,currentReportDate,marketName); } } } } Console.WriteLine("Zip excel reports imported."); }
public void MigrateDataFromExcelFiles(string zipFilePath) { ExtractZipFile(zipFilePath); using (var supermarketContext = new SupermarketContext()) { IList<Models.Sale> allSales = new List<Models.Sale>(); GetSales(TempFolderForExtract, supermarketContext, allSales); foreach (var sale in allSales) { supermarketContext.Sales.Add(sale); } supermarketContext.SaveChanges(); } Directory.Delete(TempFolderForExtract, true); }
public static List<JSonReport> GetJsonReports() { var dbContex = new SupermarketContext(); using (dbContex) { var jsonReports = from p in dbContex.Products join dr in dbContex.DailyReports on p.Id equals dr.ProductId join v in dbContex.Vendors on p.VendorId equals v.Id select new JSonReport { ProductId = p.Id, ProductName = p.ProductName, VendorName = v.VendorName, TotalQuntitySold = dr.Quantity, TotalIncome = dr.Quantity * dr.Price }; return jsonReports.ToList() ; } }
public void CreateXmlSalesByVendorsReport(string destinationFilePath) { Encoding encoding = Encoding.GetEncoding("utf-8"); using (var supermarketContext = new SupermarketContext()) { using (var writer = new XmlTextWriter(destinationFilePath, encoding)) { writer.Formatting = Formatting.Indented; writer.IndentChar = '\t'; writer.Indentation = 1; writer.WriteStartDocument(); writer.WriteStartElement("sales"); foreach (var vendor in supermarketContext.Vendors.ToList()) { WriteSalesByVendor(writer, supermarketContext.Sales, vendor); } writer.WriteEndDocument(); } } }
public static void UpdateProductsFromMssql() { var msSqLcontext = new SupermarketContext(); var mySqlContext = new marketsystemEntities(); var products = msSqLcontext.Products .ToList(); foreach (var product in products) { var productId = product.Id; var productName = product.ProductName; var vendorId = product.VendorId; var measureId = product.MeasureId; var typeId = product.ProductTypeId; var price = product.Price; try { mySqlContext.products.AddOrUpdate( p => p.productId, new product() { productId = productId, productName = productName, vendorId = (int) vendorId, measureId = (int)measureId, productTypeId = (int)typeId, productPrice = (decimal) price }); mySqlContext.SaveChanges(); } catch (Exception ex) { throw new ArgumentException(); } } }
private void LoadVendorExpensesToSqlServer(IList<string[]> expenses) { using (var supermarketContext = new SupermarketContext()) { foreach (var expense in expenses) { string vendorName = expense[0]; int vendorID = supermarketContext.Vendors.First(v => v.VendorName == vendorName).ID; decimal value = decimal.Parse(expense[2]); Models.Expense newExpense = new Models.Expense() { VendorID = vendorID, Month = DateTime.Parse(expense[1]), Value = value }; supermarketContext.Expenses.Add(newExpense); } supermarketContext.SaveChanges(); } }
static void Main(string[] args) { //// only the first time // FromMySqlNeverAgain(); Database.SetInitializer(new MigrateDatabaseToLatestVersion<SupermarketContext, Configuration>()); /// run separately or it will be slow :) //Zipper.UnzipFiles(); //ExcelReader.ReadExcelData(); //Application.EnableVisualStyles(); //Application.SetCompatibleTextRenderingDefault(false); //Application.Run(new Form1()); var dbCobntext = new SupermarketContext(); XmlReport.GenerateXml("../../../../GeneratedReports/xmlSales.xml"); JsonReport jsonReport = new JsonReport(dbCobntext); jsonReport.GetProductsReport(@"../../../../GeneratedReports/productsReport.json"); jsonReport.GenerateJsonFilesForEachProduct(@"../../../../GeneratedReports/ProductReportsForMongo/"); MongoDbProvider.AddProducts(jsonReport); var ProductsFRomMongo = MongoDbProvider.MongoDBCollectionToList(); ExcelReport excelReport = new ExcelReport(dbCobntext); excelReport.GenerateVendorTotalReport("n", ProductsFRomMongo); var vendorExpenses = ReadXML.ReadFileXML("../../../../Reports/Vendors-Expenses.xml"); MongoDbProvider.AddVendorExpenses(vendorExpenses); Console.WriteLine(); }
///<summary> ///This is summary for methods that transfer records from MQ SQL Server model into MySQL DB. ///The method first select all records from MQ SQL Server model model. ///Second it inserts record into MySQL DB. ///</summary> public static void UpdateMeasuresFromMssql() { var msSqLcontext = new SupermarketContext(); var mySqlContext = new marketsystemEntities(); var measures = msSqLcontext.Measures .ToList(); foreach (var measure in measures) { var id = measure.Id; var name = measure.MeasureName; mySqlContext.measures.AddOrUpdate( m => m.measureId, new MySqlModel.measure() { measureId = id, measureName = name }); mySqlContext.SaveChanges(); } }
/// <summary> /// Insert the content of the excel files into the database. /// </summary> /// <param name="rowData">array of data containing name, type, price and quantity of the product</param> /// <param name="context">the Entity Framework connection to the database</param> /// <param name="reportDate">the date taken from the folder with the reports</param> /// <param name="supmarketName">the name of the supermarket</param> private void InsertIntoDataBase(object[] rowData, SupermarketContext context,string reportDate, string supmarketName) { // string[] inputNameType = rowData[0].ToString().Split(); // string prodType = inputNameType[0]; // string prodName = inputNameType[1]; string prodName = rowData[0].ToString(); int quantity = int.Parse(rowData[1].ToString()); float price = float.Parse(rowData[2].ToString()); DateTime dateReport = DateTime.ParseExact(reportDate, "dd-MMM-yyyy", CultureInfo.InvariantCulture); //this.CheckProductType(prodType, context); this.CheckProduct(prodName,price,context); var productId = context.Products.Where(p => p.ProductName == prodName).Select(p => p.Id).FirstOrDefault(); var marketId = context.Supermarkets.Where(s => s.Name == supmarketName).Select(s => s.SupermarketId).FirstOrDefault(); var existMarketSalesProduct = context.SupermarketSalesProducts .Where(s => s.SupermarketId == marketId && s.ProductId == productId && s.SalesDate == dateReport) .Select(s => new { s.ProductId, s.SupermarketId, s.SalesDate }).FirstOrDefault(); if (existMarketSalesProduct == null) { context.SupermarketSalesProducts.Add(new SupermarketSalesProduct { SupermarketId = marketId, ProductId = productId, Quantity = quantity, Price = (decimal) price, SalesDate = dateReport }); context.SaveChanges(); } }
/// <summary> /// Check for existing product type, because we want to have distinct data in the database and if the product type do not exists the method add it to the database. /// </summary> /// <param name="prodTypeName">the type to be checked</param> /// <param name="context">the Entity Framework connection to the database</param> private void CheckProductType(string prodTypeName, SupermarketContext context) { var existPodType = context.ProductTypes .Where(t => t.TypeName == prodTypeName) .Select(t => t.TypeName) .FirstOrDefault(); if (existPodType == null) { context.ProductTypes.Add(new ProductType { TypeName = prodTypeName }); context.SaveChanges(); } }
/// <summary> /// Check for existing product type, because we want to have distinct data in the database and if the product do not exists the method add it to the database. /// </summary> /// <param name="productName">the name to be checked</param> /// <param name="price">the price needed to be eventually created new product</param> /// <param name="context">the Entity Framework connection to the database</param> private void CheckProduct(string productName,float price, SupermarketContext context) { var existProd = context.Products .Where(p => p.ProductName == productName) .Select(p => p.ProductName) .FirstOrDefault(); if (existProd == null) { context.Products.Add(new Product { ProductName = productName, Price = price }); context.SaveChanges(); Console.WriteLine("Product: {0} added!", productName); } else { Console.WriteLine("Product: {0} existed!", productName); } }
/// <summary> ///Check for existing supermarket, because we want to have distinct data in the database and if the supermarket do not exists the method add it to the database. /// </summary> /// <param name="supName">the array containig the supermarket name</param> /// <param name="context">the Entity Framework connection to the database</param> private void CheckForExistingSupermarket(object[] supName, SupermarketContext context) { string marketName = this.SupermarketName(supName); var existSupName = context.Supermarkets.Where(s => s.Name == marketName).Select(s => s.Name).FirstOrDefault(); if (existSupName == null) { context.Supermarkets.Add(new MS_SQL_Server.Supermarket { Name = marketName, IsDeleted = false }); context.SaveChanges(); Console.WriteLine("Supermarket: {0} added!", marketName); } else { Console.WriteLine("Supermarket: {0} existed!",marketName); } }
private static double PourReportData(PdfPTable table) { double totalSum = 0; double grandTotal = 0; var msSQLcontext = new SupermarketContext(); msSQLcontext.Vendors.FirstOrDefault(); var salesReport = msSQLcontext.SupermarketSalesProducts .Select(p => new { date = p.SalesDate, location = p.Supermarket.Name, product = p.Product.ProductName, quantity = p.Quantity, price = p.Price, measure = p.Product.Measure.MeasureName }) .GroupBy(d => d.date); foreach (var item in salesReport) { HeaderGeneration(table, item.Key); double sum = 0; foreach (var item2 in item) { sum = (double) (item2.quantity * item2.price); table.AddCell(item2.product); table.AddCell(item2.quantity.ToString() + " " + item2.measure); table.AddCell(String.Format("{0:0.00}", item2.price)); table.AddCell(item2.location); table.AddCell(String.Format("{0:0.00}", sum)); totalSum += sum; } FooterGeneration(table, totalSum, item.Key); grandTotal += totalSum; totalSum = 0; } return grandTotal; }
public static void GenerateXMLReport() { var msSQLcontext = new SupermarketContext(); string filePath = @"..\..\..\..\Reports\Sales-by-Vendors-Report.xml"; msSQLcontext.Vendors.FirstOrDefault(); var data = msSQLcontext.SupermarketSalesProducts .Select(s => new { vendor = s.Product.Vendor.VendorName, date = s.SalesDate, quontity = s.Quantity, price = s.Price }) .GroupBy(v => new { v.vendor, }).ToList(); XmlDocument doc = new XmlDocument(); XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null); doc.AppendChild(docNode); XmlElement sales = doc.CreateElement("sales"); doc.AppendChild(sales); foreach (var vendorData in data) { XmlNode vendorTag = doc.LastChild; XmlElement sale = doc.CreateElement("sale"); sale.SetAttribute("vendor", vendorData.Key.vendor); double totalSum = 0; var vendorByDate = vendorData .GroupBy(g => g.date) .Select(s => new { date = s.Key, quantity = s.Select(q => q.quontity), price = s.Select(p => p.price) }) .ToList(); foreach (var d in vendorByDate) { XmlElement summary = doc.CreateElement("summary"); summary.SetAttribute("date", d.date.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture)); var q = d.quantity.ToList(); var p = d.price.ToList(); for (int i = 0; i < q.Count; i++) { totalSum += (double) (q[i] * p[i]); } summary.SetAttribute("total-sum", String.Format("{0:0.00}", totalSum)); sale.AppendChild(summary); totalSum = 0; } vendorTag.AppendChild(sale); } doc.Save(filePath); DirectoryInfo directoryInfo = new DirectoryInfo(filePath); Console.WriteLine("XML report generated."); Console.WriteLine("File: {0}", directoryInfo.FullName); }
public JsonReport(SupermarketContext dbContext) { this.DbContext = dbContext; }
public static void GenerateXml(string fileName) { Encoding encoding = Encoding.GetEncoding("utf-8"); using (XmlTextWriter writer = new XmlTextWriter(fileName, encoding)) { writer.Formatting = Formatting.Indented; writer.IndentChar = '\t'; writer.Indentation = 1; writer.WriteStartDocument(); writer.WriteStartElement("sales"); var dbContext = new SupermarketContext(); using (dbContext) { foreach (var vendorData in dbContext.Vendors) { writer.WriteStartElement("sale"); writer.WriteAttributeString("vendor", vendorData.Name); var data = from vendor in dbContext.Vendors join product in dbContext.Products on vendor.ID equals product.Vendor_ID join sale in dbContext.Sales on product.ID equals sale.Product.ID where vendor.ID == vendorData.ID select new { SaleDate = sale.Date, TotalSales = sale.Sum }; var result = from item in data group item by new { item.SaleDate } into r select new { SaleDate = r.FirstOrDefault().SaleDate, TotalSum = r.Sum(v => v.TotalSales) }; foreach (var resultItem in result) { WriteSummary(writer, resultItem.SaleDate.ToString(), resultItem.TotalSum.ToString()); } writer.WriteEndElement(); } //for (int i = 0; i < length; i++) //{ // writer.WriteStartElement("sale"); // writer.WriteAttributeString("vendor", date); // for (int i = 0; i < length; i++) // { // } // writer.WriteEndElement(); //} } writer.WriteEndDocument(); } //Console.WriteLine("Document {0} created.", fileName); }