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

时间:2015-12-17 22:00:50

标签: c# .net datatable

我有一个具有这种结构的DataTable:

DataTable1

StudentName| StudentSurname | Status
Joe        | Doe            | OK
John       | Smith          | OK

和另一个具有这种结构的表:

DataTable2

foreach (DataColumn dc in DataTable1.Columns)
                {
                    if (DataTable1.Contains("NAME"))
                    {
                       //how can I copy it??
                    }
                }

我需要按照以下规则将所有行从DataTable1复制到DataTable2:

  1. 在NAME栏中找到的数据 - >将所有数据复制到列StudentName
  2. 在SURNAME->列中找到的数据;将所有数据复制到ColumnSurname列
  3. 始终在列状态中写入OK。
  4. 实现这一目标的最佳方法是什么?

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

    Library/
        CMakeLists.txt
        main.cpp
        src/
            file1.cpp
        include/
            file1.h
        Domains/
            CMakeLists.txt
            BlackJack/
                CMakeLists.txt
                src/
                    foo1.cpp
                include/
                    foo1.h
            ...
        libs/
            tapkee/
                CMakeLists.txt
                include/
                    foo.hpp
             ....
    

    我正在使用C#。

2 个答案:

答案 0 :(得分:3)

使用给定的示例数据,您可以简单地使用DataTable.Copy方法复制具有结构和dataRows的整个数据表:

var copyDataTable = dataTable.Copy();

之后,您可以为第三列设置DataColumn.DefaultValue属性。添加新行时,将自动设置此值:

copyDataTable.Columns["Status"].DefaultValue = "OK";

答案 1 :(得分:1)

您可能希望将foreach语句基于行而不是列。您可以遍历检查特定数据行的值的行,然后更新该值。

我认为这段代码可以做你想做的事。

DataTable NewTable = OldDataTable;

NewTable.Columns.Add("Status",typeOf(String));

(向DataTable添加列:https://msdn.microsoft.com/en-us/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遍历数据表并删除行[“Status”]!= true。

中的行