srting不会在c#中转换为null值 [英] srting does not convert in null value in c#
问题描述
我正在将字符串转换为空值,但它返回0但我想要空值而不是0.
我的代码是
public decimal 跨度>? HwareCost {获取; set ; }
decimal tmpHwareCost = 0 .0m;
if (Decimal.TryParse(Convert.ToString((dataRow [ HwareCost])), out tmpHwareCost))
itAreaList.HwareCost = tmpHwareCost;
plz帮帮我
很少代码中需要注意的事项。
1 )Convert.ToString(dataRow [ HwareCost])
它将转换对象并将返回字符串,如果object为null,则返回空/空字符串。
2 )Decimal.TryParse
它会尝试将对象转换为十进制,如果object为null,则它将0指定为out变量。 />
如果你想在你的小数属性中有一个空对象,那么就像这样做代码。
< pre lang =c#> if (!Convert.IsDBNull(dataRow [ HwareCost]))
{
itAreaList.HwareCost = Convert.ToDe cimal(dataRow [ HwareCost]);
}
else
{
itAreaList.HwareCost = null 跨度>;
}
DataRow字段扩展方法如下 [ ^ ]
< pre lang =c#> HwareCost = dataRow.Field< decimal?> ( HwareCost跨度>);
LINQPAD示例代码:
小数跨度>? HwareCost1 { get ; set ; }
decimal ? HwareCost2 { get ; set ; }
void Main()
{
var table = GetTable ();
// 读取第一行值
HwareCost1 = table.Rows [ 0 ]。字段< decimal?> ( HwareCost);
// HwareCost1.Dump(); //25.44
// 读取第二行值
HwareCost2 = table.Rows [ 1 ]。字段< decimal?> ( HwareCost);
// HwareCost2.Dump(); // null
}
静态 DataTable GetTable()
{
DataTable表= new DataTable();
DataColumn列;
column = new DataColumn( HwareCost ,
System.Type.GetType( System.Decimal)) ;
column.AllowDBNull = true ;
table.Columns.Add(column);
table.Columns.Add( Date, typeof运算跨度>(DateTime的));
table.Rows.Add( 25 .44m,DateTime.Now);
table.Rows.Add( null ,DateTime.Now);
return 表;
}
试试..
if (!String.IsNullorEmpty(Convert.ToString((dataRow [ HwareCost])))
{
itAreaList.HwareCost = Convert.ToDecimal((dataRow [ HwareCost]);
}
else
{
itAreaList.HwareCost = null ;
}
i am converting string to null value but it returns 0 but i want null value instead of 0.
my code is
public decimal? HwareCost { get; set; }
decimal tmpHwareCost = 0.0m;
if (Decimal.TryParse(Convert.ToString((dataRow["HwareCost"])), out tmpHwareCost))
itAreaList.HwareCost = tmpHwareCost;
plz help me
There are few things in your code to notice.
1)Convert.ToString(dataRow["HwareCost"])
It will convert the object and will return the string and if object is null then it returns a blank/empty string.
2)Decimal.TryParse
It will try to convert the object into decimal and if object is null then it will assign 0 to out variable.
If you want to have a null object into your decimal property then do the code like this.
if(!Convert.IsDBNull(dataRow["HwareCost"])) { itAreaList.HwareCost = Convert.ToDecimal(dataRow["HwareCost"]); } else { itAreaList.HwareCost = null; }
DataRow Field extension method as below[^]
HwareCost = dataRow.Field<decimal?>("HwareCost");
LINQPAD sample code:
decimal? HwareCost1 { get; set; } decimal? HwareCost2 { get; set; } void Main() { var table = GetTable(); //read first row value HwareCost1 = table.Rows[0].Field<decimal?>("HwareCost") ; //HwareCost1.Dump(); //25.44 //read 2nd row value HwareCost2 = table.Rows[1].Field<decimal?>("HwareCost") ; //HwareCost2.Dump(); //null } static DataTable GetTable() { DataTable table = new DataTable(); DataColumn column; column = new DataColumn("HwareCost", System.Type.GetType("System.Decimal")); column.AllowDBNull = true; table.Columns.Add(column); table.Columns.Add("Date", typeof(DateTime)); table.Rows.Add(25.44m,DateTime.Now); table.Rows.Add(null,DateTime.Now); return table; }
try..
if (!String.IsNullorEmpty(Convert.ToString((dataRow["HwareCost"]))) { itAreaList.HwareCost = Convert.ToDecimal((dataRow["HwareCost"]); } else { itAreaList.HwareCost=null; }
这篇关于srting不会在c#中转换为null值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!