C# 如何以手动/编程方式创建数据行?

C# 如何以手动/编程方式创建数据行?,c#,system.data,C#,System.data,我的项目的代码库有一个遗留方法,该方法将DataRow作为参数,我想为其创建一个单元测试方法 如何手动创建要传递给该方法的DataRow对象?该类没有面向公共的构造函数。可以通过创建新的DataTable实例,向DataTable中添加与DataRow需要具有的“键”对应的列,然后对DataTable调用NewRow()来创建DataRow。例如: DataTable usersTable = new DataTable(); usersTable.Columns.Add("Firs

我的项目的代码库有一个遗留方法,该方法将DataRow作为参数,我想为其创建一个单元测试方法


如何手动创建要传递给该方法的DataRow对象?该类没有面向公共的构造函数。

可以通过创建新的DataTable实例,向DataTable中添加与DataRow需要具有的“键”对应的列,然后对DataTable调用
NewRow()
来创建DataRow。例如:

DataTable usersTable = new DataTable();

usersTable.Columns.Add("FirstName");
usersTable.Columns.Add("LastName");
usersTable.Columns.Add("Email");

DataRow userRow = usersTable.NewRow();

userRow["FirstName"] = "Elmer";
userRow["LastName"] = "Example";
userRow["Email"] = "elmer@example.com";
usersTable.Rows.Add(userRow);

您应该注意,如果单元测试需要对
DataTable
DataColumnCollection
(Columns)强制执行类型约束,那么可以使用
DataColumn
类的重载构造函数来包括预期的
类型

        var dt = new DataTable();

        var dc = new DataColumn("Age", typeof(int));
        dt.Columns.Add(dc);
        var dr = dt.NewRow();

        dr["Age"] = "test"; // throws an ArgumentException
        //Input string was not in a correct format. Couldn't store<test> in Age Column.  Expected type is Int32.
var dt=new DataTable();
var dc=新数据列(“年龄”,类型(int));
dt.Columns.Add(dc);
var dr=dt.NewRow();
dr[“年龄”]=“测试”//抛出一个异常
//输入字符串的格式不正确。无法存储在年龄列中。应为Int32类型。

usersTable.Rows.Add(userRow);您还需要将此行添加到datatable中。这样做
dt.Rows.Add(dr)