private void ConvertColumnFromRow(DataRow row, EnumColumnList enumColumns) { 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]; if (orignalData == null || orignalData == DBNull.Value || orignalData.ToString().Trim().Length <= 0) { row[entry.NewColumnIndex] = DBNull.Value; } row[entry.NewColumnIndex] = DataMapperHelper.ConvertIfEnum(orignalData, enumType); } } }
/// <summary> /// 执行返回第一行第一列的值,并自动转换为对应的类型,如果是泛型值且为空则会返回null /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public T ExecuteScalar <T>() { object v = DataMapperHelper.ConvertIfEnum(ExecuteScalar(), typeof(T)); return(DataConvertor.GetValue <T>(v, null, null)); }