将DataTable数据类型更改为decimal [英] Change DataTable datatype to decimal

查看:240
本文介绍了将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆