C# 更新DataTable.Rows[i].ItemArray[j]值

C# 更新DataTable.Rows[i].ItemArray[j]值,c#,datetime,datatable,C#,Datetime,Datatable,我有一个DataTable,我在pageload事件中从CSV文件中创建并填充它 在向用户显示数据之前,我需要先按日期再按小时对它们进行排序 它对数据进行了很好的排序,但当它们再次显示给用户时,我想格式化日期列,使其以“dd/MM/yyyy”格式显示 我使用下面的代码来实现这一点 DateTime d; for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < d

我有一个DataTable,我在pageload事件中从CSV文件中创建并填充它

在向用户显示数据之前,我需要先按日期再按小时对它们进行排序

它对数据进行了很好的排序,但当它们再次显示给用户时,我想格式化日期列,使其以“dd/MM/yyyy”格式显示

我使用下面的代码来实现这一点

DateTime d;
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            for (int j = 0; j < dt.Rows[i].ItemArray.Length; j++)
            {
                if (j == 0)
                {
                    d = DateTime.Parse(dt.Rows[i][j].ToString());
                    dt.Rows[i].ItemArray[j] = (string.Format("{0:dd/MM/yyyy}", d)).ToString(); 
                }

            }
DateTime d;
对于(int i=0;i
但是
dt.Rows[i].ItemArray[j]
的值永远不会更新为我需要的格式


我不知道它为什么不这样做

假设日期单元格中的数据类型为字符串:

string strDate = (!(dt.Rows[i][j] is DbNull)) ? DateTime.Parse(dt.Rows[i][j]).ToString("dd/MM/yyyy") : "Unknown";
dt.Rows[i][j] = strDate;
你可以更进一步:

string strDate = "Unknown";
DateTime date;
if (DateTime.TryParse(dt.Rows[i][j], out date))
{
    strDate = date.ToString("dd/MM/yyyy");
}

dt.Rows[i][j] = strDate;
希望这能有所帮助。

[Link]()