Ответ 1
Да, вы можете сделать следующее:
dt.Rows.Add("Sydney");
Можно ли добавить новую строку в datatable в С# только с одной строкой кода? Я просто собираю некоторые данные для теста, и кажется довольно медленным, чтобы написать что-то вроде этого:
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"});
И да, я знаю, что в то время, когда я написал этот вопрос, я мог бы закончить его кодирование длинным путем, вместо того, чтобы откладывать его:)
Спасибо!
Да, вы можете сделать следующее:
dt.Rows.Add("Sydney");
Если вы делаете это для Unit Tests, почему бы просто не использовать вспомогательный метод, либо в каком-то статическом классе, либо еще в тестовом базовом классе?
У меня есть все классы тестов, наследующие класс TestBase, где я могу добавить материал, чтобы помочь во всех тестах.
например
[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);
}
}
Цель состоит в том, чтобы сохранить ваш тестовый код минимальным и уменьшить избыточный код (не быть сухим).
НТН
Другим способом было бы сделать вспомогательную функцию:
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");
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");