DataTable.NewRow 内存无法释放问题
紫川娃哈哈 2013-05-10 02:24:16 /// <summary>
/// 将datatable的column的数据类型转换成指定的数据类型
/// </summary>
/// <param name="toDealTable"></param>
/// <param name="ObjPropertyDocuments"></param>
/// <returns></returns>
public static DataTable CovertTableType(DataTable toDealTable, List<MOD_OBJPROPERTY> ObjPropertyDocuments)
{
DataTable dt = CreateTabelWithType(ObjPropertyDocuments);
foreach (DataRow dr in toDealTable.Rows)
{
DataRow drNew = dt.NewRow();
foreach (DataColumn dc in dt.Columns)
{
try
{
if (dc.DataType == typeof(decimal))
{
String value = dr[dc.ColumnName].ToString().Trim();
if (value == String.Empty)
{
drNew[dc.ColumnName] = DBNull.Value;
}
else
{
drNew[dc.ColumnName] = dr[dc.ColumnName] == DBNull.Value ? 0 : Convert.ToDecimal(dr[dc.ColumnName]);
}
continue;
}
if (dc.DataType == typeof(long))
{
String value = dr[dc.ColumnName].ToString().Trim();
if (value == String.Empty)
{
drNew[dc.ColumnName] = DBNull.Value;
}
else
{
drNew[dc.ColumnName] = dr[dc.ColumnName] == DBNull.Value ? 0 : Convert.ToInt64(value);
}
continue;
}
drNew[dc.ColumnName] = dr[dc.ColumnName];
}
catch (System.Exception ex)
{
LogUtil.LogError(dc.ColumnName, ex);
LogUtil.LogDebug(dc.ColumnName);
throw ex;
}
}
dt.Rows.Add(drNew);
}
return dt;
}
上面这个方法在程序中,会产生很多无法释放内存资源的NewRow,请问下我应该怎么做呢?
参考:http://www.cnblogs.com/eaglet/archive/2009/10/14/1582928.html