You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

233 lines
6.7 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
namespace Utils.Datas
{
public static class DataTypeUtil
{
public static int GetIntNum(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return 0;
return int.Parse(obj.ToString());
}
public static int? GetIntNullNum(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return null;
return int.Parse(obj.ToString());
}
public static double GetDoubleNum(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return 0;
return double.Parse(obj.ToString());
}
public static double? GetDoubleNullNum(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return null;
return double.Parse(obj.ToString());
}
public static decimal GetDecimalNum(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return 0;
return decimal.Parse(obj.ToString());
}
public static decimal? GetDecimalNullNum(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return null;
return decimal.Parse(obj.ToString());
}
public static long GetLongNum(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return 0;
return long.Parse(obj.ToString());
}
public static long? GetLongNullNum(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return null;
return long.Parse(obj.ToString());
}
public static DateTime? GetDateTimeNullData(object obj)
{
if (obj == null || string.IsNullOrEmpty(obj.ToString()))
return null;
return DateTime.Parse(obj.ToString());
}
public static bool GetBoolData(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return false;
return bool.Parse(obj.ToString());//只能转换字符串:“true”、“false”
}
///// <summary>
///// 用于FireBird的数据类型
///// </summary>
///// <param name="booleanNum">存储在数据库中的值(数据库中的类型为Smallint)</param>
//public static bool? GetBoolNullFromSmallInt(int booleanNum)
//{
// if (booleanNum > 0)
// return true;
// if (booleanNum == 0)
// return false;
// return null;//booleanNum < 0
//}
///// <summary>
///// 用于FireBird的数据类型
///// </summary>
///// <param name="booleanNum">存储在数据库中的值(数据库中的类型为Smallint)</param>
//public static bool GetBoolDataFromSmallInt(int booleanNum)
//{
// return booleanNum > 0;
//}
///// <summary>
///// 将bool类型值,转换为存储在Firebird数据库中的值
///// </summary>
///// <param name="booleanData"></param>
///// <returns></returns>
//public static int GetDatabaseDataFromBool(bool booleanData)
//{
// return booleanData ? 1 : 0;
//}
public static bool? GetBoolNullData(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return null;
return bool.Parse(obj.ToString());//只能转换字符串:“true”、“false”
}
public static short GetShortNum(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return 0;
return short.Parse(obj.ToString());
}
public static short? GetShortNullNum(object obj)
{
if (obj == null || obj.ToString() == string.Empty)
return null;
return short.Parse(obj.ToString());
}
public static string ToStringEmptyIfNull(object obj)
{
return obj == null ? string.Empty : obj.ToString();
}
/// <summary>
/// 空数据会被转换为"null"
/// </summary>
public static string ToStringNullIfNull(decimal? num)
{
return num == null ? "null" : num.ToString();
}
/// <summary>
/// 空数据会被转换为"null"
/// </summary>
public static string ToStringNullIfNull(int? num)
{
return num == null ? "null" : num.ToString();
}
/// <summary>
/// 空数据会被转换为"null"
/// </summary>
public static string ToStringNullIfNull(DateTime? num)
{
return num == null ? "null" : num.ToString();
}
/// <summary>
/// 将以指定字符串分隔的数据转换成List数据。
/// <para>如果有为空或不合法的数据,则去除之,只保留合法的数据。</para>
/// </summary>
public static List<double> GetListDouble(object obj, string separator)
{
bool hasFailedItem;
return GetListDouble(obj, separator, out hasFailedItem);
}
/// <summary>
/// 将以指定字符串分隔的数据转换成List数据。有转换失败的信息,则out的值为true;否则为false
/// <para>如果有为空或不合法的数据,则去除之,只保留合法的数据。</para>
/// </summary>
/// <param name="hasFailedItem">有转换失败的信息,则out的值为true;否则为false</param>
public static List<double> GetListDouble(object obj, string separator, out bool hasFailedItem)
{
hasFailedItem = false;
List<double> result = new List<double>();
var splitResult = obj.ToString().Split(new string[] { separator }, StringSplitOptions.RemoveEmptyEntries);
foreach (var item in splitResult) {
double num;
if (double.TryParse(item, out num))
result.Add(num);
else
hasFailedItem = true;
}
return result;
}
/// <summary>
/// 将以指定字符串分隔的数据转换成List数据。
/// <para>如果有为空或不合法的数据,则去除之,只保留合法的数据。</para>
/// </summary>
public static List<int> GetListInt(object obj, string separator)
{
bool hasFailedItem;
return GetListInt(obj, separator, out hasFailedItem);
}
/// <summary>
/// 将以指定字符串分隔的数据转换成List数据。有转换失败的信息,则out的值为true;否则为false
/// <para>如果有为空或不合法的数据,则去除之,只保留合法的数据。</para>
/// </summary>
/// <param name="hasFailedItem">有转换失败的信息,则out的值为true;否则为false</param>
public static List<int> GetListInt(object obj, string separator, out bool hasFailedItem)
{
hasFailedItem = false;
List<int> result = new List<int>();
var splitResult = obj.ToString().Split(new string[] { separator }, StringSplitOptions.RemoveEmptyEntries);
foreach (var item in splitResult) {
int num;
if (int.TryParse(item, out num))
result.Add(num);
else
hasFailedItem = true;
}
return result;
}
/// <summary>
/// 将以指定字符串分隔的数据转换成List数据。
/// <para>如果有为空或不合法的数据,则去除之,只保留合法的数据。</para>
/// </summary>
public static IList<string> GetListString(object obj, string separator)
{
return obj.ToString().Split(new string[] { separator }, StringSplitOptions.RemoveEmptyEntries);
}
}
}