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 } }