public void ReorderColumns(List <string> keys) { if (!keys.All(Cols.Contains)) { string message = String.Format("ReorderColumns: keys({0}) to reorder are not a subset of CSVData ({1})", String.Join(",", keys), String.Join(",", Cols)); throw new ArgumentOutOfRangeException(nameof(keys), message); } else if (keys.Count != keys.Distinct().Count()) { string message = String.Format("ReorderColumns: keys({0}) cannot contain duplicates", String.Join(",", keys)); throw new ArgumentOutOfRangeException(nameof(keys), message); } else { List <int> oldIdxs = keys.Select(x => ColIdxMap[x]).ToList(); _columns = keys; _rows = _rows.Select(row => { var newRow = new List <string>(); oldIdxs.ForEach(idx => { newRow.Add(row[idx]); }); return(newRow); }).ToList(); } }
private static string GetCols(object[,] prm, ColsType typ) { string vals = string.Empty; string cols = string.Empty; string retorno = string.Empty; for (int i = 0; i < prm.GetLength(0); i++) { if (typ == ColsType.cols) { retorno += string.Format("{0} [{1}]", retorno.Equals(string.Empty) ? "" : "\r\n,", prm[i, 0].ToString().Replace("\'", "")); } else if (typ == ColsType.equals) { if (prm[i, 1].GetType().Name.Equals("String")) { vals = string.Format("\'{0}\'", prm[i, 1].ToString().Replace("\'", "")); } else if (prm[i, 1].GetType().Name.IndexOf("Int") == 0) { vals = prm[i, 1].ToString(); } retorno += string.Format("{0} [{1}] = {2}", retorno.Equals(string.Empty) ? "" : "\r\n,", prm[i, 0].ToString().Replace("\'", ""), vals); } else if (typ == ColsType.vals) { if (prm[i, 1].GetType().Name.Equals("String")) { vals = string.Format("\'{0}\'", prm[i, 1].ToString()); } else if (prm[i, 1].GetType().Name.IndexOf("Int") == 0) { vals = prm[i, 1].ToString(); } retorno += string.Format("{0} {1}", retorno.Equals(string.Empty) ? "" : "\r\n,", vals); } else if (typ == ColsType.keys) { if (prm[i, 1].GetType().Name.Equals("String")) { vals = string.Format("\'{0}\'", prm[i, 1].ToString().Replace("\'", "")); } else if (prm[i, 1].GetType().Name.IndexOf("Int") == 0) { vals = prm[i, 1].ToString(); } retorno += string.Format("{0} [{1}] = {2}", retorno.Equals(string.Empty) ? "" : "\r\nAND", prm[i, 0].ToString().Replace("\'", ""), vals); } } return(retorno); }
private void SetColumnsAndRows(ColsType columns, RowsType rows) { if (columns.Count != columns.Distinct().Count()) { string message = String.Format("CSVData CSVData: duplicate column names found in input ({0})", String.Join(",", columns)); throw new ArgumentOutOfRangeException(nameof(columns), message); } _columns = columns.Select(x => x).ToList(); _rows = rows.Select(x => x).ToList(); _columnsIdxMap = new Dictionary <string, int>(); ConstructColIdxMap(); }
public CSVData(ColsType columns, RowsType rows) { SetColumnsAndRows(columns, new RowsType()); ConstructRows(rows); }
private static Dictionary <string, string> ToDict(ColsType keys, RowType values) { return(keys.Zip(values, (k, v) => new { k, v }).ToDictionary(x => x.k, x => x.v)); }