C# データテーブルから2次元配列へ変換

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操作をするときによく使用するので、ぜひ利用してみてください。

 

C#の記事一覧

おすすめの記事