向数据表中添加几乎相同的X行

本文关键字:数据表 添加 | 更新日期: 2023-09-27 18:18:05

假设我需要向我的数据表添加10行,除了一个值之外,它们实际上是相同的。因此,例如,我使用以下代码添加第一行:

row = myTable.NewRow();
row["col1"] = value1;
row["col2"] = value2;
row["col3"] = value3;
row["col4"] = value4;
row["col5"] = value5;
row["col6"] = value6;
myTable.Rows.Add(row);

接下来的9行完全相同,唯一的区别是"col4",因为"value4"在所有10行中都是不同的。

我如何能够插入相同的行X次,而不必重复前面的代码?基本上就是:

  1. 创建第一行
  2. 用值
  3. 填充Row1
  4. 复制Row1到新Row2
  5. 改变Row2("col4")
  6. 将这两行添加到myTable

谢谢。

向数据表中添加几乎相同的X行

简单的循环就可以了。你也可以使用重载的DataRowCollection。添加方法,该方法接受用于创建新行的值数组:

// e.g. you have 10 integers for col4
var col4values = new [] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach(var col4value in col4values)
  myTable.Rows.Add(value1, value2, value3, col4value, value5, value6);

您可以使用类似于下面的模式,您只需将您的值数组作为参数传递,并返回一个已填充的表:

    private DataTable CreateRows(object[] column4Vals)
    {
        DataTable myTable = new DataTable();
        foreach (object col in column4Vals)
        {
            DataRow row = myTable.NewRow();
            row["col1"] = "value1";
            row["col2"] = "value2";
            row["col3"] = "value3";
            row["col4"] = col;
            row["col5"] = "value5";
            row["col6"] = "value6";
            myTable.Rows.Add(row);
        }
        return myTable;
    }

这里还有一个更灵活的方法,你可以为你的标准数据分配任何其他值。

    private DataTable CreateRows(object value1, object value2, object value3, object[] column4Vals, object value5, object value6)
    {
        DataTable myTable = new DataTable();
        foreach (object col in column4Vals)
        {
            DataRow row = myTable.NewRow();
            row["col1"] = value1;
            row["col2"] = value2;
            row["col3"] = value3;
            row["col4"] = col;
            row["col5"] = value5;
            row["col6"] = value6;
            myTable.Rows.Add(row);
        }
        return myTable;
    }

在使用'DataRow'时应该非常小心。通常,您向表中添加对行的引用,并更改引用的行,而不是添加新行。

但是,您可以先复制数据row,然后再将其添加到表中。

调查:

http://msdn.microsoft.com/en-us/library/system.data.datatable.importrow (v = vs.110) . aspx

>