是否可以使用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"});
是的,我知道在我写这个问题的时候,我可以完成编码,而不是拖延它:)
谢谢!
答案 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"}
}
};