I want to add new properties to an object based on loop iterations, is this possible in .Net? The reason I want to do this is to iterate over the rows in the Excel spreadsheet and for each row that I read successfully I want to create a new property of the dynamic object. Therefore, when the loop is complete, I can simply pass the object to the method and write all the records.
See below code:
protected void ReadData(string filePath, bool upload) { StringBuilder sb = new StringBuilder(); #region upload if (upload == true) // CSV file upload chosen { using (CsvReader csv = new CsvReader(new StreamReader(filePath), true)) // Cache CSV file to memory { int fieldCount = csv.FieldCount; // Total number of fields per row string[] headers = csv.GetFieldHeaders(); // Correct CSV headers stored in array SortedList<int, string> errorList = new SortedList<int, string>(); // This list will contain error values ORCData data = new ORCData(); bool errorFlag = false; int errorCount = 0; // Check if headers are correct first before reading data if (headers[0] != "first name" || headers[1] != "last name" || headers[2] != "job title" || headers[3] != "email address" || headers[4] != "telephone number" || headers[5] != "company" || headers[6] != "research manager" || headers[7] != "user card number") { sb.Append("Headers are incorrect"); } else { while (csv.ReadNextRecord()) try { //Check csv obj data for valid values for (int i = 0; i < fieldCount; i++) { if (i == 0 || i == 1) // FirstName and LastName { if (Regex.IsMatch(csv[i].ToString(), "^[az]+$", RegexOptions.IgnoreCase) == false) //REGEX letters only min of 5 char max of 20 { errorList.Add(errorCount, csv[i]); errorCount += 1; errorFlag = true; string text = csv[i].ToString(); } } } if (errorFlag == true) { sb.Append("<b>" + "Number of Error: " + errorCount + "</b>"); sb.Append("<ul>"); foreach (KeyValuePair<int, string> key in errorList) { sb.Append("<li>" + key.Value + "</li>"); } } else // All validation checks equaled to false. Create User { string message = ORCLdap.CreateUserAccount(rootLDAPPath, svcUsername, svcPassword, csv[0], csv[1], csv[2], csv[3], csv[4], csv[5], csv[7]); // TODO: Add to object here sb.Append(message); //sb.Append("<b>New user data uploaded successfully</b>"); } }// end of try catch (Exception ex) { sb.Append(ex.ToString()); } finally { lblMessage.Text = sb.ToString(); sb.Remove(0, sb.Length); hdnRdoSelection.Value = "1"; } } } } #endregion
I have never tried to do this before, so I'm not sure how I will approach him, but any help would be wonderful. Thanks.
source share