using System;
namespace OS.Common.Extention
{
public static class ConvertExtention
{
#region DataReader转化部分
/////
///// 获取布尔类型
/////
///// Data reader
///// Column name
///// A boolean value
//public static bool GetBoolean(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return false;
// }
// return Convert.ToBoolean(rdr[index]);
//}
/////
///// 获取字节流类型
/////
///// Data reader
///// Column name
///// A byte array
//public static byte[] GetBytes(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return null;
// }
// return (byte[])rdr[index];
//}
/////
///// 获取时间格式对象,如果不存在返回最小时间
/////
///// Data reader
///// Column name
///// A date time
//public static DateTime GetDateTime(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return DateTime.MinValue;
// }
// return Convert.ToDateTime(rdr[index]);
//}
/////
///// 获取UTC时间,如果不存在则返回最小时间
/////
///// Data reader
///// Column name
///// A date time
//public static DateTime GetUtcDateTime(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return DateTime.MinValue;
// }
// return DateTime.SpecifyKind((DateTime)rdr[index], DateTimeKind.Utc);
//}
/////
///// 获取时间格式对象(可空)
/////
///// Data reader
///// Column name
///// A date time if exists; otherwise, null
//public static DateTime? GetNullableDateTime(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return default(DateTime?);
// }
// return Convert.ToDateTime(rdr[index]);
//}
/////
///// 获取UTC时间,可空
/////
///// Data reader
///// Column name
///// A date time if exists; otherwise, null
//public static DateTime? GetNullableUtcDateTime(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return default(DateTime?);
// }
// return DateTime.SpecifyKind((DateTime)rdr[index], DateTimeKind.Utc);
//}
/////
///// 返回十进制类型
/////
///// Data reader
///// Column name
///// A decimal value
//public static decimal GetDecimal(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return decimal.Zero;
// }
// return Convert.ToDecimal(rdr[index]);
//}
/////
///// 返回双精度类型
/////
///// Data reader
///// Column name
///// A double value
//public static double GetDouble(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return 0.0;
// }
// return Convert.ToDouble(rdr[index]);
//}
/////
///// 获取GUID对象
/////
///// Data reader
///// Column name
///// A GUID value
//public static Guid GetGuid(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return Guid.Empty;
// }
// return (Guid)rdr[index];
//}
/////
///// 获取int对象
/////
///// Data reader
///// Column name
///// An integer value
//public static int GetInt32(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return 0;
// }
// return rdr[index].ToInt32( );
//}
/////
///// 得到可以为null的int型数据 ?号表示可以为空值类型,这是C#的特性,表示Nullable类型结构
/////
///// Data reader
///// Column name
///// A nullable integer value
//public static int? GetNullableInt(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return default(int?);
// }
// return rdr[index].ToInt32( );
//}
/////
///// 获取string类型对象
/////
///// Data reader
///// Column name
///// A string value
//public static string GetString(this IDataReader rdr, string columnName)
//{
// int index = rdr.GetOrdinal(columnName);
// if (rdr.IsDBNull(index))
// {
// return null;
// }
// return Convert.ToString(rdr[index]);
//}
#endregion
#region 字符串数字转化部分
///
/// 字符串转化成无符号整形
///
/// 要转化的值
/// 如果转化失败,返回的默认值
///
public static UInt32 ToUInt32(this string obj, UInt32 defaultValue = 0)
{
try
{
UInt32 returnValue = 0;
if (UInt32.TryParse(obj, out returnValue))
{
return returnValue;
}
}
catch (Exception)
{
}
return defaultValue;
}
///
/// 字符串转化成数字
///
/// 要转化的值
/// 如果转化失败,返回的默认值
///
public static int ToInt32( this string obj ,int defaultValue=0)
{
try
{
int returnValue = 0;
if (int.TryParse(obj, out returnValue))
{
return returnValue;
}
}
catch (Exception)
{
}
return defaultValue;
}
///
/// 字符串转化成数字
///
/// 要转化的值
/// 如果转化失败,返回的默认值
///
public static int ToInt32(this object obj, int defaultValue=0)
{
if (obj==null)
{
return defaultValue;
}
return obj.ToString().ToInt32( );
}
///
/// 字符串转化成数字
///
/// 要转化的值
/// 如果转化失败,返回的默认值
///
public static long ToInt64(this string obj, int defaultValue=0)
{
try
{
long returnValue = 0;
if (long.TryParse(obj, out returnValue))
{
return returnValue;
}
}
catch (Exception)
{
}
return defaultValue;
}
///
/// 字符串转化成数字
///
/// 要转化的值
/// 如果转化失败,返回的默认值
///
public static decimal ToDecimal(this string obj, decimal defaultValue=0)
{
try
{
decimal returnValue = 0;
if (decimal.TryParse(obj, out returnValue))
{
return returnValue;
}
}
catch (Exception)
{
}
return defaultValue;
}
///
/// 字符串转化成数字
///
/// 要转化的值
/// 如果转化失败,返回的默认值
///
public static decimal ToDecimal(this object obj, decimal defaultValue=0)
{
if (obj==null)
{
return defaultValue;
}
return obj.ToString().ToInt32();
}
///
/// 字符串转化成数字
///
/// 要转化的值
/// 如果转化失败,返回的默认值
///
public static double ToDouble(this string obj, double defaultValue = 0)
{
try
{
double returnValue = 0;
if (double.TryParse(obj, out returnValue))
{
return returnValue;
}
}
catch (Exception)
{
}
return defaultValue;
}
///
/// 字符串转化成数字
///
/// 要转化的值
/// 如果转化失败,返回的默认值
///
public static double ToDouble(this object obj, double defaultValue = 0)
{
if (obj == null)
{
return defaultValue;
}
return obj.ToString().ToDouble();
}
///
/// 字符串转化成数字
///
/// 要转化的值
/// 如果转化失败,返回的默认值
///
public static float ToFloat(this string obj, float defaultValue = 0)
{
try
{
float returnValue = 0;
if (float.TryParse(obj, out returnValue))
{
return returnValue;
}
}
catch (Exception)
{
}
return defaultValue;
}
///
/// 字符串转化成数字
///
/// 要转化的值
/// 如果转化失败,返回的默认值
///
public static float ToFloat(this object obj, float defaultValue = 0)
{
if (obj == null)
{
return defaultValue;
}
return obj.ToString().ToFloat();
}
///
/// 字符串转化成时间
///
/// 要转化的值
///
public static DateTime? ToNullableDateTime(this string obj)
{
if (string.IsNullOrEmpty(obj))
{
return null;
}
DateTime date;
return DateTime.TryParse(obj, out date) ? date : default(DateTime?);
}
///
/// 转化成布尔类型
///
///
public static bool ToBoolean(this string str)
{
bool isOkay = false;
Boolean.TryParse(str, out isOkay);
return isOkay;
}
#endregion
}
}