繁体   English   中英

将DataColumns中的数据从一个DataTable复制到另一个

[英]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:

  1. 在名称列中找到数据->将所有数据复制到学生名称列中
  2. 在SURNAME列中找到的数据->将所有数据复制到StudentSurname列中
  3. 始终在“状态”列中写入“确定”。

实现此目标的最佳方法是什么?

编辑:到目前为止,我试图做到这一点:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM