代码之家  ›  专栏  ›  技术社区  ›  JumpingJezza

如何在一行代码中向c#DataTable添加新行?

  •  14
  • JumpingJezza  · 技术社区  · 14 年前

    有没有可能只需要一行代码就可以在c中的数据表中添加一个新行?我只是在为测试准备一些数据,写这样的东西似乎很慢:

    DataTable dt= new DataTable("results");
    DataRow dr1 = dt.NewRow();
    dr1[0] = "Sydney";
    dt.Rows.Add(dr1);
    DataRow dr2 = dt.NewRow();
    dr2[0] = "Perth";
    dt.Rows.Add(dr2);
    DataRow dr3 = dt.NewRow();
    dr3[0] = "Darwin";
    dt.Rows.Add(dr3);
    

    我假设你可以做下面的代码,但我找不到正确的语法。

    dt.Rows.Add(dt.NewRow()[0]{"Sydney"});
    dt.Rows.Add(dt.NewRow()[0]{"Perth"});
    dt.Rows.Add(dt.NewRow()[0]{"Darwin"});
    

    5 回复  |  直到 14 年前
        1
  •  21
  •   Pierre-Alain Vigeant    14 年前

    是的,您可以执行以下操作:

    dt.Rows.Add("Sydney");
    
        2
  •  3
  •   RPM1984    14 年前

    如果您是为了单元测试而这样做的,为什么不在某个静态类中或者更好的是在测试基类中使用helper方法呢?

    例如

    [TestClass]
    public class TestBase
    {
       protected void AddMockDataRow(DataTable dt)
       {
          DataRow dr = dt.NewRow();
          dr[0] = "Sydney"; // or you could generate some random string.
          dt.Rows.Add(dr);
       }
    }
    

    [TestClass]
    public class SomeTest : TestBase
    {
        [TestMethod]
        public void Ensure_Something_Meets_Some_Condition()
        {
           // Arrange.
           DataTable dt = new DataTable("results");
    
           // Act.
           AddMockDataRow(dt);
    
           // Assert.
           Assert.IsTrue(someCondition);
        }
    }
    

    这里的目标是使您的测试代码最小化,并减少冗余代码(不要枯燥)。

        3
  •  2
  •   Chris    14 年前

    DataTable MakeDataTable(String name, String contents)
    {
      DataTable dt = new DataTable(name);
      foreach (string val in contents.Split(","))
      {
        DataRow dr = dt.NewRow();
        dr[0] = val;
        dt.Rows.Add(dr);
      }
      return dt;
    }
    
    MakeDataTable("results","Sydney,Perth,Darwin");
    
        4
  •  1
  •   PabitraMicrosoftResearch    7 年前

    DataTable dtStudent=新DataTable();

    //Add new column
    dtStudent.Columns.AddRange (
    new DataColumn[] {
    new DataColumn("SlNo", typeof(int)), 
    new DataColumn("RollNumber", typeof(string)),
    new DataColumn("DateOfJoin", typeof(DateTime)),
    new DataColumn("Place", typeof(string)),
    new DataColumn("Course", typeof(string)),
    new DataColumn("Remark", typeof(string))
    }
    );
    // Add value to the related column
    dtStudent.Rows.Add(1, "10001", DateTime.Now, "Bhubaneswar", "MCA", "Good");
    
        5
  •  0
  •   dkostas    6 年前

    要快速创建包含一些数据的新数据表,可以在一行中完成所有操作:

    DataTable testData = new DataTable( "TestData" ) {
        Columns = { "TestColumn1", "TestColumn2" },
        Rows = {
            { "Row1Col1Val", "Row1Col2Val"},
            { "Row2Col1Val", "Row2Col2Val"}
        }
    };