【问题标题】:DataColumn DataType int and longDataColumn DataType int 和 long
【发布时间】:2012-02-27 17:40:40
【问题描述】:

是否可以在包含 int 和 long 值的 DataTable 中有一个 DataColumn?如果是有效的 int,它应该返回一个 int 值,否则它应该返回一个 long 值。

对于我想要实现这一点的一些背景,我发布了一个创建 int 类型的 DataColumn 的产品,但它应该从一开始就很长。现在我不想破坏将值显式转换为 int 的现有项目,但我想在列中允许长值。

我可以在 DataTable 上订阅一个事件来将值转换为 int 吗?

以下代码应该可以正确执行。

        DataTable dataTable = new DataTable();
        dataTable.Columns.Add("IntAndLong", typeof(long));

        DataRow intRow = dataTable.NewRow();
        intRow[0] = 123;
        dataTable.Rows.Add(intRow);

        DataRow longRow = dataTable.NewRow();
        longRow[0] = 3000000000;
        dataTable.Rows.Add(longRow);

        long longValue = (long)dataTable.Rows[1][0];
        int intValue = (int)dataTable.Rows[0][0];

【问题讨论】:

    标签: c# datatable


    【解决方案1】:

    我建议在 long 类型变量中收集 datacolumn 值,检查其值是否小于 int.MaxValue 且大于 int.MinValue,然后如果需要,将其转换为 int 变量。

    【讨论】:

    • 应该在哪里进行检查?这可能是我无法访问的现有代码,因此这行代码必须继续工作。 int intValue = (int)dataTable.Rows[0][0];
    • int intVal = (longVal
    • 感谢您帮助 Raj。我不认为有解决这个问题的办法。必须更改代码以将其显式转换为 long。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多