// get the total number of columns public int Get_Number_Of_Columns(String InputFile) { CsvUtils cu = new CsvUtils(); cu.SetFile(InputFile); return(cu.Get_Number_Of_Columns()); }
// Rearranges columns to enforce a particular order public Boolean Enforce_Column_Order(String InputFile, String ColumnOrderTemplate) { CsvUtils cu = new CsvUtils(); cu.SetFile(InputFile); String[] ColNames = ColumnOrderTemplate.Split(','); IDictionary <int, List <String> > NewDict = new Dictionary <int, List <String> >(); List <string> AllColumnNameFromTemplate = new List <string>(); List <int> Order = new List <int>(); foreach (String s in ColNames) { AllColumnNameFromTemplate.Add(s.Trim()); // Console.WriteLine("Debug, adding:" + s.Trim()); } int NumberOfColumnsInParameters = AllColumnNameFromTemplate.Count(); int NumberOfColumnsInCsv = cu.Get_Number_Of_Columns(); if (NumberOfColumnsInParameters != NumberOfColumnsInCsv) { // Number of Columns in parameter passed is different from number of columns in CSV return(false); } //Console.WriteLine("sdf:" + NumberOfColumnsInParameters + ":" + NumberOfColumnsInCsv); //Console.ReadKey(); foreach (String Col in AllColumnNameFromTemplate) { if (cu.Get_Column_Index(Col) < 0) { return(false); } Order.Add(cu.Get_Column_Index(Col)); } foreach (KeyValuePair <int, List <String> > entry in cu.dict) { List <String> result1 = Order.Select(i => entry.Value[i]).ToList(); NewDict.Add(entry.Key, result1); } cu.dict = NewDict; cu.Save_File_As_CSV(InputFile); return(true); }