获取数据行中列的数据类型



我已经巡游了许多问题,现在得到一个解决我的问题,但我真的找不到任何!

我正在做ERP系统的集成,经常遇到同样的问题,所以现在是时候做点什么了。

许多SOAP web服务返回查询结果为System.Data。数据集,其中数据集有一个表。

问题是,我得到的规范可能说日期值是DateTime数据类型,但我的程序并不真正同意。

是否有一种方法可以获得DataRow中每个列的特定数据类型?

我已经创建了一个UnitTest来测试我的扩展函数,GetColumnTypes(DataTable Table)。

DataTable tbl = new DataTable("TestTable");
tbl.Columns.Add("INTEGER");
tbl.Columns.Add("STRING");
tbl.Columns.Add("DATETIME");
tbl.Columns.Add("DOUBLE");
tbl.Columns.Add("FLOAT");
tbl.Columns.Add("LONG");
tbl.Rows.Add(int.MaxValue, string.Empty, DateTime.MaxValue, double.MaxValue, float.MaxValue, long.MaxValue);

这只是一个虚拟表,但应该可以达到目的。和我的扩展方法。

    public static Type[] GetColumnTypes(DataTable Table)
    {
        IList<Type> types = new List<Type>();
        DataRow row = Table.Rows[0];
        foreach (object item in row.ItemArray)
        {
            types.Add(item.GetType());
        }
        return types.ToArray();
    }

这里的结果是行数组中每个项的字符串。即使我在行中发送特定的原始数据类型,例如。长。MaxValue等。

如果我试图获取Table。列,然后使用DataType,我也只得到字符串。

有办法做到这一点吗?

谢谢:)

在向DataTable添加列时,它决定要保存的数据类型,否则它将其作为默认字符串。因此,当添加列do下面的修改然后它会给你预期的结果

DataTable tbl = new DataTable("TestTable");
        tbl.Columns.Add("INTEGER",typeof(int));
        tbl.Columns.Add("STRING", typeof(string));
        tbl.Columns.Add("DATETIME", typeof(DateTime));
        tbl.Columns.Add("DOUBLE", typeof(double));
        tbl.Columns.Add("FLOAT", typeof(float));
        tbl.Columns.Add("LONG", typeof(long));
        tbl.Rows.Add(int.MaxValue, string.Empty, DateTime.MaxValue, double.MaxValue, float.MaxValue, long.MaxValue);
        GetColumnTypes(tbl);

相关内容

  • 没有找到相关文章

最新更新