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