当前位置:  开发笔记 > 编程语言 > 正文

设置DataRow中项目的值不起作用

如何解决《设置DataRow中项目的值不起作用》经验,为你挑选了2个好方法。

我试图将DataTable中的所有DateTime值转换为字符串.这是我使用的方法:

private static void ConvertDateTimesToStrings(DataTable dataTable)
{
    if (dataTable == null)
    {
        return;
    }

    for (int rowIndex = 0; rowIndex < dataTable.Rows.Count; rowIndex++ )
    {
        for (int i = 0; i < dataTable.Columns.Count; i++)
        {
            DateTime dateTime;
            try
            {
                dateTime = (DateTime)dataTable.Rows[rowIndex][i];
            }
            catch (InvalidCastException)
            {
                continue;
            }
            dataTable.Rows[rowIndex][i] = dateTime.ToString("dd.MM.yyyy hh:mm:ss");
        }
    }
}

这条线路工作后:

dataTable.Rows[rowIndex][i] = dateTime.ToString("dd.MM.yyyy hh:mm:ss");

我检查dataTable.Rows [rowIndex] [i]的值,看它仍然是DateTime,而不是字符串.为什么会发生这种情况,我该如何解决?

编辑:我正在尝试这样做,因为我正在与api战斗,不幸的是我没有选择使用哪个组件.



1> Biri..:

这根本不起作用,因为您没有更改底层数据类型.

您有一个DataTable,其列的数据类型为DateTime.

您可以为其分配一个String,但它将转换回DateTime.

为什么要将其更改为格式化字符串?你不能只在你需要显示时格式化,并作为DateTime处理,直到你必须显示它?

更新:如果在尝试转换之前检查列的类型也更好,它可以更快:

if (dataTable.Columns[0].DataType == typeof(DateTime))
{
}



2> StingyJack..:

它可能已确定列数据类型是日期时间,并且当您将值保存在那里时将值重新装箱到datetime.

试试这个......在数据表上创建一个新的列作为TypeOf(String),并将字符串值保存到该列中.复制完所有值后,删除日期时间列.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有