예제 #1
0
 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();
     }
 }
예제 #2
0
        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);
        }
예제 #3
0
 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();
 }
예제 #4
0
 public CSVData(ColsType columns, RowsType rows)
 {
     SetColumnsAndRows(columns, new RowsType());
     ConstructRows(rows);
 }
예제 #5
0
 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));
 }