web-dev-qa-db-ja.com

手動/プログラムでDataRowを作成するにはどうすればよいですか?

プロジェクトのコードベースには、単体テストメソッドを作成するパラメーターとしてDataRowを使用するレガシーメソッドがあります。

メソッドに渡すDataRowオブジェクトを手動で作成するにはどうすればよいですか? System.Data.DataRow クラスには、パブリックコンストラクタがありません。

9
Jon Schneider

DataRowを作成するには、新しいDataTableインスタンスを作成し、DataRowに必要な「キー」に対応する列をDataTableに追加してから、DataTableでNewRow()を呼び出します。例えば:

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"] = "[email protected]";
20
Jon Schneider

ユニットテストでDataColumnCollection(列)の型制約をDataTableに強制する必要がある場合は、DataColumnクラスのオーバーロードされたコンストラクターを使用して、期待されるType

        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.
4
Mark C.