public DataTable ExecuteDataTable(EnumColumnList enumColumns, CodeNamePairColumnList codeNamePairColunms) { DataTable table = ExecuteDataTable(); ConvertColumn(table, enumColumns, codeNamePairColunms); return(table); }
public DataTable ExecuteDataTable(EnumColumnList enumColumns) { DataTable table = ExecuteDataTable(); ConvertEnumColumn(table, enumColumns); return(table); }
private void ConvertColumnFromRow(DataRow row, EnumColumnList enumColumns, CodeNamePairColumnList codeNamePairColunms) { if (enumColumns != null && enumColumns.Count > 0) { foreach (var entry in enumColumns) { Type enumType = entry.EnumType; if (!enumType.IsEnum) { throw new ArgumentException("The type '" + enumType.AssemblyQualifiedName + "' is not enum.", "enumColumns"); } int columnIndex = entry.ColumnIndex.HasValue ? entry.ColumnIndex.Value : row.Table.Columns.IndexOf(entry.ColumnName + "_ECCentral_Auto_Removed_820319"); if (columnIndex < 0) { continue; } if (row[columnIndex] == null || row[columnIndex] == DBNull.Value) { row[entry.NewColumnIndex] = DBNull.Value; continue; } object orignalData = row[columnIndex]; object tmp; if (orignalData == null || orignalData == DBNull.Value || orignalData.ToString().Trim().Length <= 0) { row[entry.NewColumnIndex] = DBNull.Value; } else if (EnumCodeMapper.TryGetEnum(orignalData, enumType, out tmp)) { row[entry.NewColumnIndex] = tmp; } else { row[entry.NewColumnIndex] = Enum.Parse(enumType, orignalData.ToString(), true); } } } if (codeNamePairColunms != null && codeNamePairColunms.Count > 0) { foreach (var entry in codeNamePairColunms) { int columnIndex = entry.ColumnIndex.HasValue ? entry.ColumnIndex.Value : row.Table.Columns.IndexOf(entry.ColumnName + "_ECCentral_Auto_Removed_820319"); if (row[columnIndex] == null || row[columnIndex] == DBNull.Value) { row[entry.NewColumnIndex] = DBNull.Value; continue; } List <CodeNamePair> list = CodeNamePairManager.GetList(entry.DomainName, entry.Key); string code = row[columnIndex].ToString(); CodeNamePair option = list.Find(x => x.Code == code); if (option != null) { row[entry.NewColumnIndex] = option.Name; } } } }
public void ConvertColumn(DataTable table, EnumColumnList enumColumns, CodeNamePairColumnList codeNamePairColunms) { if (table == null || table.Rows == null || table.Rows.Count <= 0) { return; } if (enumColumns != null && enumColumns.Count > 0) { foreach (var entry in enumColumns) { Type enumType = entry.EnumType; if (!enumType.IsEnum) { throw new ArgumentException("The type '" + enumType.AssemblyQualifiedName + "' is not enum.", "enumColumns"); } string columnName = entry.ColumnIndex.HasValue ? table.Columns[entry.ColumnIndex.Value].ColumnName : entry.ColumnName; int index = table.Columns.IndexOf(columnName); if (index >= 0) { table.Columns[index].ColumnName = (entry.NewColumnNameForOriginalValue != null && entry.NewColumnNameForOriginalValue.Trim().Length > 0) ? entry.NewColumnNameForOriginalValue : (columnName + "_ECCentral_Auto_Removed_820319"); table.Columns.Add(columnName, enumType); entry.ColumnIndex = index; entry.NewColumnIndex = table.Columns.Count - 1; } } } if (codeNamePairColunms != null && codeNamePairColunms.Count > 0) { foreach (var entry in codeNamePairColunms) { string columnName = entry.ColumnIndex.HasValue ? table.Columns[entry.ColumnIndex.Value].ColumnName : entry.ColumnName; int index = table.Columns.IndexOf(columnName); if (index >= 0) { table.Columns[index].ColumnName = (entry.NewColumnNameForOriginalValue != null && entry.NewColumnNameForOriginalValue.Trim().Length > 0) ? entry.NewColumnNameForOriginalValue : (columnName + "_ECCentral_Auto_Removed_820319"); table.Columns.Add(columnName, typeof(string)); entry.ColumnIndex = index; entry.NewColumnIndex = table.Columns.Count - 1; } } } foreach (DataRow row in table.Rows) { ConvertColumnFromRow(row, enumColumns, codeNamePairColunms); } }
public void ConvertEnumColumn(DataTable table, EnumColumnList enumColumns) { ConvertColumn(table, enumColumns, null); }