次のコードを使用して、DataTable から別の DataTable オブジェクトに n 個の行を返しています。最初にデータテーブルのレコードがデータベースから取得されたときは正常に動作していますが、手動でデータテーブルにレコードを追加するとクラッシュし、メッセージにno rowsが表示されます。currentTable.DefaultView.ToTable().Rows.Cast<DataRow>()
デバッグしたところ、 null 値が返されることがわかりました。DataTable オブジェクトから n レコードを選択する次のコードを作成しました
currentTable = currentTable.DefaultView.ToTable().Rows.Cast<DataRow>().Take(numberOfRecord).CopyToDataTable();
手動で DataTable を作成し、レコードが DataReader から DataTable に来るときに正常に動作すると、クラッシュする理由がわかりません。
次のコードを使用して DataTable を手動で作成しています
DataTable tblCurrent = new DataTable();
//For Adding columns
for (int i = 0; i < fieldCol.Length; i++)
tblCurrent.Columns.Add(string.Format("Column{0}", i + 1));
//for adding rows.
for (int i = (count + globalClass.sourceConnectionInfo.RowsToSkip); i < lineRows.Length; i++)
{
DataRow newRow = tblCurrent.NewRow();
for (int j = 0; j < fieldCol.Length; j++)
newRow[j] = fieldCol[j];
tblCurrent.Rows.Add(newRow);
}
//Then for selecting n records
if (currentTable.Rows.Count > 0)
tblCurrent = tblCurrent.DefaultView.ToTable().Rows.Cast<DataRow>().Take(numberOfRecord).CopyToDataTable();