2017-05-16 16 views
1

私のプロジェクトのコードベースには、ユニットテストメソッドを作成するためのパラメータとしてDataRowを使用するレガシーメソッドがあります。手動で/プログラムでDataRowを作成するにはどうすればよいですか?

メソッドに渡すDataRowオブジェクトを手動で作成する方法はありますか。 System.Data.DataRowクラスには、パブリックに面したコンストラクタがありません。

答えて

5

DataRowは、新しいDataTableインスタンスを作成し、DataRowに必要な「キー」に対応するDataTableに列を追加し、DataTableでNewRow()を呼び出して作成できます。たとえば: - あなたが期待Typeを含めるようにDataColumnクラスのオーバーロードされたコンストラクタを使用することができます

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]"; 
1

あなたはユニットテストがDataTableためDataColumnCollection(列)の型制約を施行するために必要な場合に注意すべきです。

 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. 
+1

私はそれを知りませんでした! :-) –

関連する問題