#region DataReader扩展 static class DataReaderExtension { ////// 获取DataReader值 /// /// DataReader /// 字段名 ///值 private static object GetValue(this IDataReader dr, string name) { return dr[name]; /*for (int i = 0; i < dr.FieldCount; i++) { string column = dr.GetName(i); if (string.Compare(column, name, true) == 0) return dr[i]; } return DBNull.Value;*/ } ////// 获取值并且转换为布尔值 /// public static bool GetBoolean(this IDataReader dr, string name) { object value = dr.GetValue(name); if (value != DBNull.Value) return (bool)value; else return false; } ////// 获取值并且转换为8位无符号整数 /// public static byte GetByte(this IDataReader dr, string name) { object value = dr.GetValue(name); if (value != DBNull.Value) return (byte)value; else return 0; } ////// 获取值并且转换为时间 /// public static DateTime GetDateTime(this IDataReader dr, string name) { object value = dr.GetValue(name); if (value != DBNull.Value) return Convert.ToDateTime(value); else return DateTime.MinValue; } ////// 获取值并且转换为可空时间 /// public static DateTime? GetNullDateTime(this IDataReader dr, string name) { object value = dr.GetValue(name); if (value != DBNull.Value) return Convert.ToDateTime(value); else return null; } ////// 获取值并且转换为数字 /// public static decimal GetDecimal(this IDataReader dr, string name) { object value = dr.GetValue(name); if (value is DBNull) return 0; else return (decimal)value; } ////// 获取值并且转换为双精度小数 /// public static double GetDouble(this IDataReader dr, string name) { object value = dr.GetValue(name); if (value != DBNull.Value) return (double)value; else return 0; } ////// 获取值并且转换为单精度小数 /// public static float GetFloat(this IDataReader dr, string name) { object value = dr.GetValue(name); if (value != DBNull.Value) return (float)value; else return 0; } ////// 获取值并且转换为短整型 /// public static short GetShort(this IDataReader dr, string name) { object value = dr.GetValue(name); if (value != DBNull.Value) return (short)value; else return 0; } ////// 获取值并且转换为整型 /// public static int GetInt(this IDataReader dr, string name) { object value = dr.GetValue(name); if (value != DBNull.Value) return (int)value; else return 0; } ////// 获取值并且转换为长整形 /// public static long GetLong(this IDataReader dr, string name) { object value = dr.GetValue(name); if (value != DBNull.Value) return (long)value; else return 0; } ////// 获取值并且转换为字符串 /// public static string GetString(this IDataReader dr, string name) { object value = dr.GetValue(name); if (value != DBNull.Value) return value.ToString(); else return string.Empty; } } #endregion #region DataRow扩展 static class DataRowExtension { ////// 获取DataReader值 /// /// DataReader /// 字段名 ///值 private static object GetValue(this DataRow row, string name) { int column_index = row.Table.Columns.IndexOf(name); if (column_index >= 0) return row[column_index]; else return DBNull.Value; } ////// 获取值并且转换为布尔值 /// public static bool GetBoolean(this DataRow row, string name) { object value = row[name]; if (value != DBNull.Value) return (bool)value; else return false; } ////// 获取值并且转换为8位无符号整数 /// public static byte GetByte(this DataRow row, string name) { object value = row.GetValue(name); if (value != DBNull.Value) return (byte)value; else return 0; } ////// 获取值并且转换为时间 /// public static DateTime GetDateTime(this DataRow row, string name) { object value = row.GetValue(name); if (value != DBNull.Value) return Convert.ToDateTime(value); else return DateTime.MinValue; } ////// 获取值并且转换为可空时间 /// public static DateTime? GetNullDateTime(this DataRow row, string name) { object value = row.GetValue(name); if (value != DBNull.Value) return Convert.ToDateTime(value); else return null; } ////// 获取值并且转换为数字 /// public static decimal GetDecimal(this DataRow row, string name) { object value = row.GetValue(name); if (value is DBNull) return 0; else return (decimal)value; } ////// 获取值并且转换为双精度小数 /// public static double GetDouble(this DataRow row, string name) { object value = row.GetValue(name); if (value != DBNull.Value) return (double)value; else return 0; } ////// 获取值并且转换为单精度小数 /// public static float GetFloat(this DataRow row, string name) { object value = row.GetValue(name); if (value != DBNull.Value) return (float)value; else return 0; } ////// 获取值并且转换为短整型 /// public static short GetShort(this DataRow row, string name) { object value = row.GetValue(name); if (value != DBNull.Value) return (short)value; else return 0; } ////// 获取值并且转换为整型 /// public static int GetInt(this DataRow row, string name) { object value = row.GetValue(name); if (value != DBNull.Value) return (int)value; else return 0; } ////// 获取值并且转换为长整形 /// public static long GetLong(this DataRow row, string name) { object value = row.GetValue(name); if (value != DBNull.Value) return (long)value; else return 0; } ////// 获取值并且转换为字符串 /// public static string GetString(this DataRow row, string name) { object value = row.GetValue(name); if (value != DBNull.Value) return value.ToString(); else return string.Empty; } } #endregion