C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

DataTable配列の長さ取得

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■95821 / inTopicNo.1)  DataTable配列の長さ取得
  
□投稿者/ モモ (1回)-(2020/09/30(Wed) 01:22:03)

分類:[C#] 

DataTable[,] TestDataTable = new DataTable[TestDataTable2.Rows.Count, TestDataTable2.Columns.Count];

TestDataTableのようなDataTable配列を定義しました。
別のTestDataTable2の行列数により、TestDataTableの行列数を動的に定義します。
この場合、TestDataTableの行数と列数を取得するにはどのように記述すればよろしいでしょうか?

普通の配列でないDataTableですと、
TestDataTable.Rows.CountもしくはTestDataTable.Columns.Countと記述するかと思いますが、
上記のような配列で定義した場合の長さの取得方法を教えてください。

※もちろん別のTestDataTable2の配列の長さがそのままTestDataTableの配列の長さになりますが、
 処理上、TestDataTable2を参照できない箇所でTestDataTableの長さを取得したいのでお伺いしています。
引用返信 編集キー/
■95822 / inTopicNo.2)  Re[1]: DataTable配列の長さ取得
□投稿者/ 魔界の仮面弁士 (2850回)-(2020/09/30(Wed) 01:48:52)
No95821 (モモ さん) に返信
> TestDataTableのようなDataTable配列を定義しました。

DataTable の配列…?
要件が良く分かりませんが、何だか違和感があります。

目的が良く分かりませんが、DataSet では駄目なのでしょうか?


> この場合、TestDataTableの行数と列数を取得するにはどのように記述すればよろしいでしょうか?
int y = TestDataTable.GetUpperBound(0);
int x = TestDataTable.GetUpperBound(1);


> DataTable[,] TestDataTable = new DataTable[TestDataTable2.Rows.Count, TestDataTable2.Columns.Count];

たとえば TestDataTable2 が 4 行 3 列あったとしましょう。
この場合、計 12 個の要素を持つ 2 次元配列が確保されたことになりますね。

ただし上記は、配列という器を用意しただけであって、
TestDataTable[0, 0] などの中身は、まだ null のままです。
実際にはこの後、各要素への代入処理が別途必要になるでしょう。

そしてこの場合、TestDataTable 内の各要素に入れるべき 12 個のデータとは、
TestDataTable2 内の各セルのデータではなく
12 個の表 (DataTable) を格納することになるわけですが、
本当にそんなに大量の DataTable を保持する必要があるのですか?

TestDataTable[0, 0] = new DataTable();
引用返信 編集キー/
■95836 / inTopicNo.3)  Re[2]: DataTable配列の長さ取得
□投稿者/ ぶなっぷ (245回)-(2020/10/01(Thu) 09:06:43)
私も「何かを勘違いしている」に一票ですな。

DataTable[,] TestDataTable =
  new DataTable[TestDataTable2.Rows.Count, TestDataTable2.Columns.Count];
を見たままのイメージで表現するなら、

・まず、TestDataTable2というテーブルがある
・そのテーブルの中身は無視して、行数 * 列数分のテーブル配列を定義している

仮にTestDataTable2が 12行 * 12列 だとして、12 * 12 = 144個のテーブルを用意
している。この144個のテーブルに何を格納するかの話は全く出てきていない。
正直、意味不明。

例えば、テーブルの特定フィールドの値を表す DataValueというクラス(自作クラス
とする)があったとして、
  DataValue[,] TestValues =
    new DataValue[TestTable.RowCnt, TestTable.ColumnCnt];
というなら、私もイメージできます。
考えすぎで、このイメージとごっちゃになっていませんか?

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ