public static DataTable ToFormattedTable(TableDescriptorBase descriptor, DataTable rawTable) { DataTable table = new DataTable(); foreach (var col in descriptor.Columns) { table.Columns.Add(col.Name, col.Type); } ToFormattedTable(descriptor, rawTable, table); return(table); }
public static void ToFormattedTable(TableDescriptorBase descriptor, DataTable rawTable, DataTable targetTable) { for (int r = 0; r < rawTable.Rows.Count; ++r) { if (descriptor.SkipRows.Contains(r)) { continue; } DataRow rawRow = rawTable.Rows[r]; DataRow row = targetTable.NewRow(); int targetCol = 0; bool isEmpty = true; for (int c = 0; c < rawRow.ItemArray.Length; ++c) { if (descriptor.SkipColumns.Contains(c)) { continue; } if (targetCol == descriptor.Columns.Count) { break; } FormatColumn formatCol = descriptor.Columns[targetCol]; object value = formatCol.Convert(( string )rawRow[c]); row[formatCol.Name] = (value != null ? value : DBNull.Value); if (row[formatCol.Name] != DBNull.Value) { isEmpty = false; } targetCol++; } if (!isEmpty) { targetTable.Rows.Add(row); } } }