将X行添加到几乎相同的数据表中?

时间:2014-08-15 15:23:37

标签: c# asp.net .net-4.0 datatable

假设我需要在我的数据表中添加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. 创建Row1
  2. 使用值
  3. 填充Row1
  4. 将Row1复制到新的Row2
  5. 更改Row2 [“col4”]
  6. 将这两行添加到myTable
  7. 感谢。

3 个答案:

答案 0 :(得分:1)

简单的循环将完成这项工作。您还可以使用重载的DataRowCollection.Add方法,该方法接受用于创建新行的值数组:

// 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);

答案 1 :(得分:0)

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

    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;
    }

答案 2 :(得分:0)

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

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

查看:

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

以获得更好的解释和示例。