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

时间:2010-09-20 02:54:25

标签: c# datatable

是否可以使用1行代码在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 个答案:

答案 0 :(得分:19)

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

dt.Rows.Add("Sydney");

答案 1 :(得分:3)

如果您正在为单元测试执行此操作,为什么不在一些静态类中使用辅助方法,或者更好的是测试基类?

我有从TestBase类继承的所有测试类,我可以添加东西来帮助所有测试。

e.g

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

这里的目标是尽量减少测试代码并减少冗余代码(不要干掉)。

HTH

答案 2 :(得分:2)

另一种方法是创建辅助函数:

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

答案 3 :(得分:0)

DataTable dtStudent = new 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");

答案 4 :(得分:0)

要快速创建包含某些数据的新数据表,您可以在一行中全部完成:

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