既に入力されているデータセットを使用しています。次のように、テーブル内の行を反復処理しています。
foreach (DataRow row in this.dataSet.Tables["tablename"].Rows)
{
// do something
}
行がない場合、テーブルがない場合を除き、これは正常に機能するため、「オブジェクトがオブジェクトのインスタンスに設定されていません」というスタイルエラーが発生します。(つまり、 this.dataSet.Tables["tablename"] は null なので、実際には null.Rows を呼び出していますが、これはもちろん失敗します)。
これを回避するために、私はやっています:
if (this.dataSet.Tables.Contains("tablename"))
{
foreach (DataRow row in this.dataSet.Tables["tablename"].Rows)
{
// do something
}
}
率直に言って、それは罪のように醜いです。これは、.net が null オブジェクトではなく null を返すためだと思います。
テーブルの行を単純にループして、テーブルが存在しない場合は空のコレクションをループする方法はありますか?