【问题标题】:Get data type of columns in data row C#.NET获取数据行 C#.NET 中列的数据类型
【发布时间】:2015-12-22 02:01:40
【问题描述】:

我现在已经浏览了很多问题来解决我的问题,但我真的找不到任何问题!

我正在与 ERP 系统进行集成,并且经常遇到同样的问题,所以现在是时候解决它了。

许多 SOAP Web 服务以 System.Data.DataSet 形式返回查询结果,其中数据集有 1 个表。

问题是我得到的规范可能会说日期值的数据类型为 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();
    }

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

如果我尝试获取 Table.Columns 然后使用 DataType 我也只会得到字符串。

有没有办法做到这一点?

谢谢:)

【问题讨论】:

    标签: .net types datatable datacolumn


    【解决方案1】:

    在向 DataTable 添加列时,它决定了要保存的数据类型,否则将其作为字符串默认值。 因此,在修改下方添加列时,它会为您提供预期的结果

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

    【讨论】:

    • 这是您要找的吗?
    • 我会试试看!这听起来很合理,所以我将首先做一个 UnitTest,然后对一个我无法控制的 Web 服务做它。希望在做数据表时添加 typeof(type) 是很常见的 :) 谢谢!
    • 在我创建表格的地方就像一个魅力。现在到客户环境!
    • 它也适用于正在尝试集成的 ERP!非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 2018-12-10
    • 2012-03-31
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 2022-10-12
    相关资源
    最近更新 更多