/// <summary> /// Map header_hs values to Rate_Position_1,2,3... in "Dividend_DTC_Position" table /// Using [SortOrder] as reference to get the value /// </summary> /// <param name="header_hs">column header names in dataTable from excel</param> /// <returns>Dictionary with [Table_Column] index as key</returns> public Dictionary <int, List <string> > Get_colHeader_mapping(HashSet <string> header_hs) { Dictionary <int, List <string> > mapping = new Dictionary <int, List <string> >(); if (header_hs == null) { return(mapping); } //Rate_Position_1,2,3 as key Dictionary <int, DTC_Position_Headers> dic = new Dictionary <int, DTC_Position_Headers>(); foreach (DTC_Position_Headers mi in this.all_headers_list) { dic[mi.TableCol_index] = mi; } List <DTC_Position_Headers> distinct_TC_list = new List <DTC_Position_Headers>();//we may have duplicate [Table_Column] in [DTC_Position_Headers] foreach (DTC_Position_Headers mi in dic.Values) { distinct_TC_list.Add(mi); } distinct_TC_list.Sort((m1, m2) => (m1.SortOrder.Value - m2.SortOrder.Value));//excel file is created based on sort order string header_keyWord = "Option"; foreach (string header in header_hs) { List <string> word_list = HssStr.Str_to_wordList(header); if (word_list.Count < 2) { continue; } if (!word_list[0].Equals(header_keyWord, StringComparison.OrdinalIgnoreCase)) { continue; } int index = -1; if (!int.TryParse(word_list[1], out index)) { continue; } if (index <= 0 || index > distinct_TC_list.Count) { continue; } else { --index; } int keyVal = distinct_TC_list[index].TableCol_index; if (mapping.ContainsKey(keyVal)) { mapping[keyVal].Add(header); } else { List <string> tempList = new List <string>(); tempList.Add(header); mapping[keyVal] = tempList; } } return(mapping); }