有没有一种方法可以实质上创建一个新对象,以使用现有的DataRow加上一个附加的字符串作为新行插入到Datatable中?
本质上,我克隆了一个数据表,然后在该数据表中添加了另外两列,并希望用克隆表的原始表中的数据以及本例中分配给谁的其他信息来更新克隆的数据表以及什么日期。
我尝试了以下尝试,尝试使用结果r中的DataRow创建一个新对象,然后另外添加了2个字符串,但是我收到了错误消息。
Private Shared Sub PopulatedCurrAssigned
_currAssigneddt = Config.MasterTbl.Clone()
_currAssigneddt.Columns.Add("Assigned Date", GetType(DateTime))
_currAssigneddt.Columns.Add("Assigned To", GetType(String))
Dim MasterTbl As DataTable = config.MasterTbl
Dim actiontbl as DataTable = config.RefreshMasterActionTbl()
For Each row In MasterTbl.Rows
Dim result() as DataRow = actiontbl.Select("FreshAppsID = '" & row("FreshAppsID") & "'")
If result.Count() > 0 Then
For each r as DataRow in result
_currAssigneddt.Rows.Add(New Object() {r, "New", "New"})
Next
End If
Next
End Sub
任何建议或协助都将不胜感激。
更新
尝试了Rango的以下建议,并获得了以下内容:
System.ArgumentException
HResult=0x80070057
Message=Unable to cast object of type 'System.Object[]' to type
'System.IConvertible'.Couldn't store <System.Object[]> in Ledger Date Column.
Expected type is DateTime.
Source=System.Data
Inner Exception 1:
InvalidCastException: Unable to cast object of type 'System.Object[]' to type
'System.IConvertible'.
更新2
我的错误是我已将声明作为DataRow从变量中删除。
我重新添加了它,并纠正了问题。
答案 0 :(得分:1)
您可以使用:
_currAssigneddt.Rows.Add(r.ItemArray.Concat({Date.Now, "Name of Person"}).ToArray())
虽然这不是很有效,但我还是想(还解决了示例中的类型问题):
Dim newRow = _currAssigneddt.Rows.Add(r.ItemArray)
newRow("Assigned Date") = Date.Now
newRow("Assigned To") = "Name of Person"
这具有更好的可读性,输入安全且不依赖(新)列的索引。