.net 将Datatable中的所有DateTime列转换为SqlDateTime列
我想做的基本上是获取任何通用的数据表,然后 将所有DateTime列转换为SqlDateTime列。(即,如果datetime列值=datetime.MinValue,则将其设置为SqlDateTime.Null) 我是否可以在不改变原始数据表(即不添加计算列)或逐行解析整个数据表的情况下执行此操作 我之所以要这样做,是因为我需要将这个数据表提供给一个SQLBulkCopy方法,该方法将把它们一起写入数据库。使用datetime字段的问题是,它在上载时抛出一个错误.net 将Datatable中的所有DateTime列转换为SqlDateTime列,.net,sql-server-2005,datatable,type-conversion,.net,Sql Server 2005,Datatable,Type Conversion,我想做的基本上是获取任何通用的数据表,然后 将所有DateTime列转换为SqlDateTime列。(即,如果datetime列值=datetime.MinValue,则将其设置为SqlDateTime.Null) 我是否可以在不改变原始数据表(即不添加计算列)或逐行解析整个数据表的情况下执行此操作 我之所以要这样做,是因为我需要将这个数据表提供给一个SQLBulkCopy方法,该方法将把它们一起写入数据库。使用datetime字段的问题是,它在上载时抛出一个错误 AgentX嗯,我能想到的最好
AgentX嗯,我能想到的最好的办法就是 我知道这是一行一行地复制数据表,我相信使用LINQ可以更优雅地完成 还有其他人有答案吗
Dim dtOut As DataTable = dt.Clone()
For Each c As DataColumn In dtOut.Columns
If c.DataType.FullName = GetType(DateTime).FullName Then
c.DataType = GetType(SqlTypes.SqlDateTime)
End If
Next
dtOut.BeginLoadData()
Dim drtmp As DataRow
For Each dr As DataRow In dt.Rows
drtmp = dtOut.NewRow()
For Each dc As DataColumn In dt.Columns
If dc.DataType.FullName = GetType(DateTime).FullName Then
If dr(dc) = Date.MinValue Then
drtmp(dc.ColumnName) = SqlTypes.SqlDateTime.Null
Else
drtmp(dc.ColumnName) = dr(dc)
End If
Else
drtmp(dc.ColumnName) = dr(dc)
End If
Next
dtOut.Rows.Add(drtmp)
Next
dtOut.EndLoadData()
我能想到的最好的办法就是 我知道这是一行一行地复制数据表,我相信使用LINQ可以更优雅地完成 还有其他人有答案吗
Dim dtOut As DataTable = dt.Clone()
For Each c As DataColumn In dtOut.Columns
If c.DataType.FullName = GetType(DateTime).FullName Then
c.DataType = GetType(SqlTypes.SqlDateTime)
End If
Next
dtOut.BeginLoadData()
Dim drtmp As DataRow
For Each dr As DataRow In dt.Rows
drtmp = dtOut.NewRow()
For Each dc As DataColumn In dt.Columns
If dc.DataType.FullName = GetType(DateTime).FullName Then
If dr(dc) = Date.MinValue Then
drtmp(dc.ColumnName) = SqlTypes.SqlDateTime.Null
Else
drtmp(dc.ColumnName) = dr(dc)
End If
Else
drtmp(dc.ColumnName) = dr(dc)
End If
Next
dtOut.Rows.Add(drtmp)
Next
dtOut.EndLoadData()
public void ChangeDateTimeColumn(DataTable newDataTable)
{
对于(int i=0;i
public void ChangeDateTimeColumn(DataTable newDataTable)
{
对于(int i=0;i
是否缺少一个dtOut.Rows.Add(drtmp)
?此外,您可能需要删除变量i
和j
的定义。是否缺少dtOut.Rows.Add(drtmp)
?此外,您可能需要删除变量i
和j
的定义。