C#、ASP.NET通用扩展工具类之TypeParse
用法:
varint1="2".TryToInt();//转换为int失败返回0
varint2="2x".TryToInt();
varint3="2".TryToInt(1);//转换为int失败返回1
varint4="2x".TryToInt(1);
vard1="2".TryToMoney();//同上
vard2="2x".TryToMoney();
vard3="2".TryToMoney(1);
vard4="2x".TryToMoney(1);
stringa=null;
vars1=a.TryToString();
vars3=a.TryToString("1");
vard11="2".TryToDecimal();
vard22="2x".TryToDecimal();
vard33="2".TryToDecimal(1);
vard44="2x".TryToDecimal(1);
varde1="2013-1-1".TryToDate();
varde2="x2013-1-1".TryToDate();
varde3="x2013-1-1".TryToDate(DateTime.Now);
//json和model转换
varjson=new{id=1}.ModelToJson();
varmodel="{id:1}".JsonToModel<ModelTest>();
//list和dataTable转换
vardt=newList<ModelTest>().ListToDataTable();
varlist=dt.DataTableToList<ModelTest>();
代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Web.Script.Serialization;
usingSystem.Data;
usingSystem.Reflection;
usingSystem.Collections;
namespaceSyntacticSugar
{
///<summary>
///**描述:类型转换
///**创始时间:2015-6-2
///**修改时间:-
///**作者:sunkaixuan
///**使用说明:
///</summary>
publicstaticclassTypeParseExtenions
{
#region强转成int如果失败返回0
///<summary>
///强转成int如果失败返回0
///</summary>
///<paramname="thisValue"></param>
///<paramname="i"></param>
///<returns></returns>
publicstaticintTryToInt(thisobjectthisValue)
{
intreval=0;
if(thisValue!=null&&int.TryParse(thisValue.ToString(),outreval))
{
returnreval;
}
returnreval;
}
#endregion
#region强转成int如果失败返回errorValue
///<summary>
///强转成int如果失败返回errorValue
///</summary>
///<paramname="thisValue"></param>
///<paramname="i"></param>
///<returns></returns>
publicstaticintTryToInt(thisobjectthisValue,interrorValue)
{
intreval=0;
if(thisValue!=null&&int.TryParse(thisValue.ToString(),outreval))
{
returnreval;
}
returnerrorValue;
}
#endregion
#region强转成double如果失败返回0
///<summary>
///强转成money如果失败返回0
///</summary>
///<paramname="thisValue"></param>
///<paramname="i"></param>
///<returns></returns>
publicstaticdoubleTryToMoney(thisobjectthisValue)
{
doublereval=0;
if(thisValue!=null&&double.TryParse(thisValue.ToString(),outreval))
{
returnreval;
}
return0;
}
#endregion
#region强转成double如果失败返回errorValue
///<summary>
///强转成double如果失败返回errorValue
///</summary>
///<paramname="thisValue"></param>
///<paramname="errorValue"></param>
///<returns></returns>
publicstaticdoubleTryToMoney(thisobjectthisValue,interrorValue)
{
doublereval=0;
if(thisValue!=null&&double.TryParse(thisValue.ToString(),outreval))
{
returnreval;
}
returnerrorValue;
}
#endregion
#region强转成string如果失败返回""
///<summary>
///强转成string如果失败返回""
///</summary>
///<paramname="thisValue"></param>
///<paramname="i"></param>
///<returns></returns>
publicstaticstringTryToString(thisobjectthisValue)
{
if(thisValue!=null)returnthisValue.ToString().Trim();
return"";
}
#endregion
#region强转成string如果失败返回errorValue
///<summary>
///强转成string如果失败返回str
///</summary>
///<paramname="thisValue"></param>
///<paramname="errorValue"></param>
///<returns></returns>
publicstaticstringTryToString(thisobjectthisValue,stringerrorValue)
{
if(thisValue!=null)returnthisValue.ToString().Trim();
returnerrorValue;
}
#endregion
#region强转成Decimal如果失败返回0
///<summary>
///强转成Decimal如果失败返回0
///</summary>
///<paramname="thisValue"></param>
///<paramname="i"></param>
///<returns></returns>
publicstaticDecimalTryToDecimal(thisobjectthisValue)
{
Decimalreval=0;
if(thisValue!=null&&decimal.TryParse(thisValue.ToString(),outreval))
{
returnreval;
}
return0;
}
#endregion
#region强转成Decimal如果失败返回errorValue
///<summary>
///强转成Decimal如果失败返回errorValue
///</summary>
///<paramname="thisValue"></param>
///<paramname="errorValue"></param>
///<returns></returns>
publicstaticDecimalTryToDecimal(thisobjectthisValue,interrorValue)
{
Decimalreval=0;
if(thisValue!=null&&decimal.TryParse(thisValue.ToString(),outreval))
{
returnreval;
}
returnerrorValue;
}
#endregion
#region强转成DateTime如果失败返回DateTime.MinValue
///<summary>
///强转成DateTime如果失败返回DateTime.MinValue
///</summary>
///<paramname="thisValue"></param>
///<paramname="i"></param>
///<returns></returns>
publicstaticDateTimeTryToDate(thisobjectthisValue)
{
DateTimereval=DateTime.MinValue;
if(thisValue!=null&&DateTime.TryParse(thisValue.ToString(),outreval))
{
returnreval;
}
returnreval;
}
#endregion
#region强转成DateTime如果失败返回errorValue
///<summary>
///强转成DateTime如果失败返回errorValue
///</summary>
///<paramname="thisValue"></param>
///<paramname="errorValue"></param>
///<returns></returns>
publicstaticDateTimeTryToDate(thisobjectthisValue,DateTimeerrorValue)
{
DateTimereval=DateTime.MinValue;
if(thisValue!=null&&DateTime.TryParse(thisValue.ToString(),outreval))
{
returnreval;
}
returnerrorValue;
}
#endregion
#regionjson转换
///<summary>
///将json序列化为实体
///</summary>
///<typeparamname="TEntity"></typeparam>
///<paramname="json"></param>
///<returns></returns>
publicstaticTEntityJsonToModel<TEntity>(thisstringjson)
{
JavaScriptSerializerjsSerializer=newJavaScriptSerializer();
returnjsSerializer.Deserialize<TEntity>(json);
}
///<summary>
///将实体序列化为json
///</summary>
///<paramname="model"></param>
///<returns></returns>
publicstaticstringModelToJson<T>(thisTmodel)
{
JavaScriptSerializerjsSerializer=newJavaScriptSerializer();
returnjsSerializer.Serialize(model);
}
#endregion
#regionDataTableList
///<summary>
///将集合类转换成DataTable
///</summary>
///<paramname="list">集合</param>
///<returns></returns>
publicstaticDataTableListToDataTable<T>(thisList<T>list)
{
DataTableresult=newDataTable();
if(list.Count>0)
{
PropertyInfo[]propertys=typeof(T).GetProperties();
foreach(PropertyInfopiinpropertys)
{
result.Columns.Add(pi.Name,pi.PropertyType);
}
for(inti=0;i<list.Count;i++)
{
ArrayListtempList=newArrayList();
foreach(PropertyInfopiinpropertys)
{
objectobj=pi.GetValue(list[i],null);
if(obj!=null&&obj!=DBNull.Value)
tempList.Add(obj);
}
object[]array=tempList.ToArray();
result.LoadDataRow(array,true);
}
}
returnresult;
}
///<summary>
///将datatable转为list
///</summary>
///<typeparamname="T"></typeparam>
///<paramname="dt"></param>
///<returns></returns>
publicstaticList<T>DataTableToList<T>(thisDataTabledt)
{
varlist=newList<T>();
Typet=typeof(T);
varplist=newList<PropertyInfo>(typeof(T).GetProperties());
foreach(DataRowitemindt.Rows)
{
Ts=System.Activator.CreateInstance<T>();
for(inti=0;i<dt.Columns.Count;i++)
{
PropertyInfoinfo=plist.Find(p=>p.Name==dt.Columns[i].ColumnName);
if(info!=null)
{
if(!Convert.IsDBNull(item[i]))
{
info.SetValue(s,item[i],null);
}
}
}
list.Add(s);
}
returnlist;
}
#endregion
}
}