将DataTable数据类型更改为decimal [英] Change DataTable datatype to decimal
本文介绍了将DataTable数据类型更改为decimal的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何克隆DataTable并将其列和行类型更改为十进制并返回DataTable?
How to clone the DataTable and change its column and row type to decimal and return the DataTable ?
private static DataTable GetDataTabletFromCSVFile(string csv_file_path)
{
DataTable csvData = new DataTable();
using (TextFieldParser csvReader = new TextFieldParser(csv_file_path))
{
csvReader.SetDelimiters(new string[] { "," });
csvReader.HasFieldsEnclosedInQuotes = true;
string[] colFields = csvReader.ReadFields();
foreach (string column in colFields)
{
DataColumn datecolumn = new DataColumn(column);
datecolumn.AllowDBNull = true;
csvData.Columns.Add(datecolumn);
;
}
while (!csvReader.EndOfData)
{
string[] fieldData = csvReader.ReadFields();
//Making empty value as null
for (int i = 0; i < fieldData.Length; i++)
{
if (fieldData[i] == "")
{
fieldData[i] = null;
}
}
csvData.Rows.Add(fieldData);
}
}
return csvData;
}
推荐答案
Quote:
使用decimal.TryParse将字符串解析为十进制
parse the strings to decimal using decimal.TryParse
foreach (string column in colFields)
{
DataColumn datacolumn = new DataColumn(column, typeof(decimal));
datacolumn.AllowDBNull = true;
csvData.Columns.Add(datacolumn);
}
while (!csvReader.EndOfData)
{
string[] fieldData = csvReader.ReadFields();
DataRow addedRow = csvData.Rows.Add();
for (int i = 0; i < fieldData.Length; i++)
{
decimal value;
if(decimal.TryParse(fieldData[i].Trim(), out value))
addedRow.SetField<decimal?>(i, value);
else
addedRow.SetField<decimal?>(i, null);
}
}
这篇关于将DataTable数据类型更改为decimal的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文