3

我有一个包含 0 行的 4 列(名称、地址、联系人、标记)的数据表 dt1,我还有另一个包含 2 列(StdName、StdAddress)的数据表 dt2,其中行数很少。

当我在做类似 dt1 = dt2.copy(); 然后我的 dt1 正在发生变化。我不想要。

我想将 dt2 列和值复制到 dt1。所以在我的 dt1 的列(名称和地址)中将填充 stdName 和 StdAddress 值。

请有人帮助我如何做到这一点。

4

10 回答 10

5

我试过这个解决方案

private void CopyColumns(DataTable source, DataTable dest, params string[] columns)
{
 foreach (DataRow sourcerow in source.Rows)
 {
   DataRow destRow = dest.NewRow();
    foreach(string colname in columns)
    {
      destRow[colname] = sourcerow[colname];
    }
   dest.Rows.Add(destRow);
  }
}

CopyColumns(source, destiny, "Column1", "column2");

它帮助我解决我的问题。

于 2013-03-06T06:00:44.547 回答
3

试试这个:

  for (int i = 0; i < dt2.Rows.Count; i++)
  {
    dt1.Rows.Add(dt2.Rows[i][0], dt2.Rows[i][1]);
  }
于 2013-03-06T06:37:15.483 回答
1
  for (int k = 0; k < dt2.Rows.Count; k++)
  {
    dt1.Rows[k]["Name"] = dt2.Rows[k]["StdName"];
    dt1.Rows[k]["Address"] = dt2.Rows[k]["StdAddress"];
  }
于 2013-03-06T06:04:02.333 回答
0

试试这个。

 DataTable dtEmp = new DataTable("EMP");
        dtEmp.Columns.Add("Name", typeof(String));
        dtEmp.Columns.Add("Address", typeof(String));
        dtEmp.Columns.Add("Contact", typeof(String));
        dtEmp.Columns.Add("Marks", typeof(String));


        DataTable dtStd = new DataTable("STD");
        dtStd.Columns.Add("StdName", typeof(String));
        dtStd.Columns.Add("StdAddress", typeof(String));

        foreach (DataColumn dc in dtStd.Columns)
        {
            dtEmp.Columns.Add(dc.ColumnName, dc.DataType);
        }
        // Import rows from dtStd Table.
于 2013-03-06T05:47:23.670 回答
0

尝试一下....

    DataTable dt1 = new DataTable();
    dt1.Columns.Add("col1", typeof(String));
    dt1.Columns.Add("col2", typeof(String));
    dt1.Columns.Add("col3", typeof(String));
    dt1.Columns.Add("col4", typeof(String));

    DataTable dt2 = new DataTable();
    dt2.Columns.Add("col5", typeof(String));
    dt2.Columns.Add("col6", typeof(String));

    dt1.Merge(dt2);
于 2014-01-09T06:54:53.273 回答
0

我知道这是旧的,但数据来自哪里?

如果您正在查询 sql 数据库,则只需更改:

    SELECT <column1>, <column2> FROM...

    SELECT <column2>, <column1> FROM...

查询并返回包含所需列的数据表。

于 2014-09-16T17:12:24.593 回答
0

我不确定,但你可以试试这个......

Datatable1.Merge(Datable2)

它会给你这样的输出

于 2014-11-28T10:03:22.397 回答
0
  for (int k = 0; k < dt2.Rows.Count; k++) {
    dt1.Rows[k]["Name"] = dt2.Rows[k]["StdName"];
    dt1.Rows[k]["Address"] = dt2.Rows[k]["StdAddress"];
  }

这对我来说非常有用。我只需要像这样在VB中重写它:

  For r = 0 To t2.Rows.Count - 1
        t1.Rows(r)("Stat") = t2.Rows(r)("Stat")
        t1.Rows(r)("Dest") = t2.Rows(r)("Dest")
        t1.Rows(r)("Orig") = t2.Rows(r)("Orig")
  Next
于 2019-11-09T02:26:38.307 回答
0

您可以通过调用 clear 克隆对表的引用并删除行,如下所示:

NewDataTable= OldDatatable.Clone();
NewDataTable.rows.clear();
于 2019-12-11T09:27:41.140 回答
0

如果计算值对您来说足够,您可以使用表达式属性,而无需循环整个数据表。

假设您已经有一个名为Email的列,您可以创建一个从Email派生的名为UserName的列:

dataTable.Columns.Add("UserName", typeof(string), "Email");
于 2021-07-13T13:55:44.360 回答