public static ValidationFile ReadExecuteCsvFile(string strFileName) { ValidationFile validations = new Models.ValidationFile(); var ValidList = new List <List <LocationData> >(); using (CsvReader reader = new CsvReader(strFileName, Encoding.Default)) { DataTable csvTable = reader.ReadIntoDataTable(); var rangePartitioner = Partitioner.Create(0, csvTable.Rows.Count, 1000); Parallel.ForEach(rangePartitioner, (range, loopState) => { var Valid = new List <LocationData>(); for (int i = range.Item1; i < range.Item2; i++) { var classObj = new LocationData() { LocationName = Convert.ToString(csvTable.Rows[i]["LocationName"]), LocCode = Convert.ToString(csvTable.Rows[i]["LocCode"]), FirstContactName = Convert.ToString(csvTable.Rows[i]["FirstContactName"]), FirstContactEmail = Convert.ToString(csvTable.Rows[i]["FirstContactEmail"]), isActive = string.IsNullOrEmpty(Convert.ToString(csvTable.Rows[i]["isActive"])) ? "N" : (Convert.ToString(csvTable.Rows[i]["isActive"]).ToLower() == "y" || Convert.ToString(csvTable.Rows[i]["isActive"]).ToLower() == "yes") ? "Y" : "N", SecondContactName = Convert.ToString(csvTable.Rows[i]["SecondContactName"]).Trim(','), SecondContactEmail = Convert.ToString(csvTable.Rows[i]["SecondContactEmail"]).Trim(','), ThirdContactName = Convert.ToString(csvTable.Rows[i]["ThirdContactName"]).Trim(','), ThirdContactEmail = Convert.ToString(csvTable.Rows[i]["ThirdContactEmail"]).Trim(',') }; Valid.Add(classObj); } ValidList.Add(Valid); }); } validations.ChunkvalidData = ValidList; return(validations); }
/// <summary> /// Tab delemited txt file reader /// </summary> /// <param name="docPath"></param> /// <returns></returns> public static ValidationFile ReadExecuteDelimitedFile(string docPath) { ValidationFile validations = new Models.ValidationFile(); var ValidList = new List <LocationData>(); bool isHeader = true; using (var file = new StreamReader(docPath)) { string line; while ((line = file.ReadLine()) != null) { if (isHeader == false) { var delimiters = new char[] { '\t' }; var segments = line.Split(delimiters, StringSplitOptions.None); LocationData lData = new Models.LocationData(); lData.LocationName = segments[0]; lData.LocCode = segments[1]; lData.FirstContactName = segments[2]; lData.FirstContactEmail = segments[3]; lData.isActive = string.IsNullOrEmpty(segments[4]) ? "N" : Convert.ToString(segments[4]).ToLower().Contains('y') ? "Y" : "N"; lData.SecondContactName = string.IsNullOrEmpty(segments[5]) ? string.Empty : segments[5]; lData.SecondContactEmail = string.IsNullOrEmpty(segments[6]) ? string.Empty : segments[6]; lData.ThirdContactName = string.IsNullOrEmpty(segments[7]) ? string.Empty : segments[7]; lData.ThirdContactEmail = string.IsNullOrEmpty(segments[8]) ? string.Empty : segments[8]; ValidList.Add(lData); } else { isHeader = false; } } file.Close(); } var ValidLists = new List <List <LocationData> >(); var rangePartitioner = Partitioner.Create(0, ValidList.Count, 1000); Parallel.ForEach(rangePartitioner, (range, loopState) => { var Valid = new List <LocationData>(); for (int i = range.Item1; i < range.Item2; i++) { var classObj = new LocationData() { LocationName = Convert.ToString(ValidList[i].LocationName), LocCode = Convert.ToString(ValidList[i].LocCode), FirstContactName = Convert.ToString(ValidList[i].FirstContactName), FirstContactEmail = Convert.ToString(ValidList[i].FirstContactEmail), isActive = string.IsNullOrEmpty(Convert.ToString(ValidList[i].isActive)) ? "N" : (Convert.ToString(ValidList[i].isActive).ToLower() == "y" || Convert.ToString(ValidList[i].isActive).ToLower() == "yes") ? "Y" : "N", SecondContactName = Convert.ToString(ValidList[i].SecondContactName).Trim(','), SecondContactEmail = Convert.ToString(ValidList[i].SecondContactEmail).Trim(','), ThirdContactName = Convert.ToString(ValidList[i].ThirdContactName).Trim(','), ThirdContactEmail = Convert.ToString(ValidList[i].ThirdContactEmail).Trim(',') }; Valid.Add(classObj); } ValidLists.Add(Valid); }); validations.ChunkvalidData = ValidLists; return(validations); }