[英]Copy data from DataColumns from one DataTable to another
我有一个具有以下结构的DataTable:
数据表1
NAME | SURNAME
Joe | Doe
John | Smith
另一个具有这种结构的表:
数据表2
StudentName| StudentSurname | Status
Joe | Doe | OK
John | Smith | OK
我需要遵循以下规则将所有行从DataTable1复制到DataTable2:
实现此目标的最佳方法是什么?
编辑:到目前为止,我试图做到这一点:
foreach (DataColumn dc in DataTable1.Columns)
{
if (DataTable1.Contains("NAME"))
{
//how can I copy it??
}
}
我正在使用C#。
使用给定的示例数据,您可以简单地使用DataTable.Copy方法复制具有结构和dataRows的整个数据表 :
var copyDataTable = dataTable.Copy();
之后,您可以为第三列设置DataColumn.DefaultValue属性。 添加新行时,此值是自动设置的:
copyDataTable.Columns["Status"].DefaultValue = "OK";
您可能希望将foreach语句基于行而不是列。 您可以遍历行,检查该特定数据行的值,然后更新该值。
我认为这段代码将完成您想要的工作。
DataTable NewTable = OldDataTable;
NewTable.Columns.Add("Status",typeOf(String));
(将列添加到数据表: https : //msdn.microsoft.com/zh-cn/library/hfx3s9wd%28v=vs.110%29.aspx )
ForEach( DataRow row in NewTable)
{
//you can reference a column by it's name to assign and check values.
//It's used here to get the column number: http://stackoverflow.com/questions/11340264/get-index-of-datatable-column-with-name
if (row["Name"] == "John")
{
row["Status"] = true;
}
}
如果只希望最后一个DataTable具有匹配true的行。 使用另一个foreach浏览数据表,并删除其中row [“ Status”]!= true的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.