public void ReadThrowsAssertExceptionIfAllowMismatchFalseAndLinesContainMismatch() { // Make reader tolerant string content = @"aaa,bbb,ccc,ddd 111,111,111,111 222,222,222 333,333,333,333"; var textReader = new StringReader(content); MutableDataTable dt = Reader.Read(textReader); var s = dt.SaveToString(); // Round-trip // - Extra comma at row with missing value. // - newline after all rows, even the last one Assert.Equal( @"aaa,bbb,ccc,ddd 111,111,111,111 222,222,222, 333,333,333,333 ", s); }
// removes rows with empty data public static string CleanByRows(string filename, params string[] ignorecolumns) { MutableDataTable dt = DataAccess.DataTable.New.ReadCsv(filename); var xx = dt.ColumnNames .Select((_, i) => { return(ignorecolumns.Contains(_) ? (int?)i : null); }) .Where(cv => cv != null); dt.KeepRows((_) => { return(_.Values.Select((__, j) => __ != "" || xx.Contains(j)).All(g => g)); }); return(dt.SaveToString()); }
// removes columns with empty data public static string CleanByColumns(string filename, params string[] ignoreproperties) { MutableDataTable dt = DataAccess.DataTable.New.ReadCsv(filename); var colsdlt = dt.Columns.Select(col => { var v = col.Values.Any(_ => _ == ""); return(v ? col.Name : null); }) .Where(_ => _ != null) .ToArray(); var a = colsdlt.Except(ignoreproperties); dt.DeleteColumns(a.ToArray()); return(dt.SaveToString()); }