
Datatable型から2次元配列型へ変換する方法を紹介していきます。
コピーしたら使えるのでぜひ利用してみてください。
EXCEL操作をするときなど使っています。
データテーブルを2次元配列に変換
すぐ利用できるよう、はじめに関数を記載しておきます。
void DtToArray(DataTable p_dt, ref object[,] array)
{
try
{
for (int rowIndex = 0; rowIndex < p_dt.Rows.Count; rowIndex++)
{
for (int colIndex=0;colIndex < p_dt.Columns.Count; colIndex++)
{
array[rowIndex, colIndex] = p_dt.Rows[rowIndex][colIndex];
}
}
}
catch
{
throw;
}
}
第1引数:変換したいデータテーブル
第2引数:返還後の2次元配列
サンプルソース
こちらのサンプルでは、データテーブルを作成し、それを2次元配列へ変換しています。
using System;
using System.Data;
using System.Windows.Forms;
namespace c_sharp
{
public partial class frmDtArray : Form
{
public frmDtArray()
{
InitializeComponent();
}
private void frmDtArray_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
DataRow dtrow;
dt.Columns.Add("sportId");
dt.Columns.Add("sportNm");
dtrow = dt.NewRow();
dtrow["sportId"] = "0001";
dtrow["sportNm"] = "野球";
dt.Rows.Add(dtrow);
dtrow = dt.NewRow();
dtrow["sportId"] = "0002";
dtrow["sportNm"] = "サッカー";
dt.Rows.Add(dtrow);
dtrow = dt.NewRow();
dtrow["sportId"] = "0003";
dtrow["sportNm"] = "バスケット";
dt.Rows.Add(dtrow);
object[,] array1 = new object[dt.Rows.Count, dt.Columns.Count];
DtToArray(dt, ref array1);
for (int i = 0; i < array1.GetLength(0); i++)
{
for (int k = 0; k < array1.GetLength(1); k++)
{
Console.Write(array1[i, k].ToString() + " ");
}
Console.WriteLine();
}
}
void DtToArray(DataTable p_dt, ref object[,] array)
{
try
{
for (int rowIndex = 0; rowIndex < p_dt.Rows.Count; rowIndex++)
{
for (int colIndex=0;colIndex < p_dt.Columns.Count; colIndex++)
{
array[rowIndex, colIndex] = p_dt.Rows[rowIndex][colIndex];
}
}
}
catch
{
throw;
}
}
}
}
解説
16~35行目:データテーブル作成
37行目:格納するための2次元配列を宣言
38行目:変換用関数を呼び出す
40~47行目:2次元配列の内容を確認
50~67行目:データテーブルを2次元配列へ変換
まとめ
データテーブルを2次元配列に変換する方法をまとめておきました。
EXCEL操作をするときによく使用するので、ぜひ利用してみてください。