C# で DataTable を作成する
- 
          
            C# で DataTableクラスを使用してデータテーブルを作成する
- C# でデータテーブルに行を追加する
- データテーブルのデータを C# で XML にエクスポートする
- データテーブルの構造を C# で XML にエクスポートする
 
このチュートリアルでは、C# でデータテーブルを作成して入力する方法について説明します。
C# で DataTable クラスを使用してデータテーブルを作成する
    
DataTable クラスは、C# でデータテーブルを作成するために使用されます。データテーブルは、C# のリレーショナルデータを含むテーブルを表します。DataTable クラスを使用して最初にデータテーブルを作成するとき、そのスキーマには指定されたスキーマがありません。データテーブルの構造を指定するには、DataColumn クラスのオブジェクトを作成して追加する必要があります。C# の DataTable.Columns.Add() 関数を使用して、DataColumn クラスのオブジェクトを DataTable クラスのオブジェクトに追加できます。
using System.Data;
namespace data_table {
  class Program {
    static void Main(string[] args) {
      DataTable workTable = new DataTable("Customers");
      DataColumn column1 = new DataColumn("Column1");
      DataColumn column2 = new DataColumn("Column2");
      workTable.Columns.Add(column1);
      workTable.Columns.Add(column2);
    }
  }
}
上記のコードでは、Customers という名前のデータテーブル workTable と、それぞれ Column1 と Column2 という名前の 2つの異なる列 column1 と column2 を作成しました。両方の列を追加して、workTable のスキーマを指定しました。これで、データを行の形式でテーブルに追加できます。
C# でデータテーブルに行を追加する
テーブルに行を追加するには、DataRow クラスのオブジェクトを作成する必要があります。DataRow クラスは、C# のテーブルにデータを追加するための新しい行を定義します。C# の DataTable.Row.Add() 関数を使用して、DataRow クラスのオブジェクトを DataTable クラスのオブジェクトに追加できます。次のコード例は、C# の DataRow クラスを使用してテーブルにデータを追加する方法を示しています。
using System.Data;
namespace data_table {
  class Program {
    static void Main(string[] args) {
      DataTable workTable = new DataTable("Customers");
      DataColumn column1 = new DataColumn("Column1");
      DataColumn column2 = new DataColumn("Column2");
      workTable.Columns.Add(column1);
      workTable.Columns.Add(column2);
      DataRow row1 = workTable.NewRow();
      row1["Column1"] = "value1";
      row1["Column2"] = "value2";
      workTable.Rows.Add(row1);
    }
  }
}
上記のコードでは、DataRow クラスのインスタンス row1 を workTable.NewRow() 関数で初期化しました。row1 の両方の列のデータを追加し、C# の workTable.Rows.Add(row1) 関数を使用して workTable に row1 を追加しました。
次の方法で、テーブルに新しい行を追加することもできます。
object[] o = { "object value1", "object value2" };
workTable.Rows.Add(o);
上記のコードでは、DataRow クラスのインスタンスを作成せずに、workTable テーブルに新しい行を追加しました。C# でテーブルに新しい行を挿入するために使用できる別のアプローチを以下に示します。
workTable.Rows.Add("direct value1", "direct value2");
上記のコードでは、オブジェクトの配列を宣言することなく、workTable テーブルの新しい行に値を直接追加しました。
データテーブルのデータを C# で XML にエクスポートする
DataTable クラスでテーブルを作成し、DataColumn クラスでその構造を定義し、テーブルに複数の行を追加したので、テーブルを表示できます。C# の DataTable.WriteXml() 関数を使用して、テーブル全体を xml ファイルにエクスポートできます。DataTable.WriteXml(path) 関数は、テーブルのすべてのデータを path の xml ファイルに書き込むために使用されます。次のコード例は、C# の DataTable.WriteXml() 関数を使用してテーブルデータを xml ファイルに書き込む方法を示しています。
using System.Data;
namespace data_table {
  class Program {
    static void Main(string[] args) {
      DataTable workTable = new DataTable("Customers");
      DataColumn column1 = new DataColumn("Column1");
      DataColumn column2 = new DataColumn("Column2");
      workTable.Columns.Add(column1);
      workTable.Columns.Add(column2);
      DataRow row1 = workTable.NewRow();
      row1["Column1"] = "value1";
      row1["Column2"] = "value2";
      workTable.Rows.Add(row1);
      object[] o = { "object value1", "object value2" };
      workTable.Rows.Add(o);
      workTable.Rows.Add("direct value1", "direct value2");
      workTable.WriteXml("workTable.xml");
    }
  }
}
上記のコードでは、C# の workTable.WriteXml("workTable.xml") 関数を使用して、workTable テーブル内のすべてのデータを xml ファイル workTable.xml にエクスポートしました。workTable.xml ファイルの内容を以下に示します。
<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <Customers>
    <Column1>value1</Column1>
    <Column2>value2</Column2>
  </Customers>
  <Customers>
    <Column1>object value1</Column1>
    <Column2>object value2</Column2>
  </Customers>
  <Customers>
    <Column1>direct value1</Column1>
    <Column2>direct value2</Column2>
  </Customers>
</DocumentElement>
データテーブルの構造を C# で XML にエクスポートする
逆に、テーブルのスキーマまたは構造だけを C# の xml ファイルにエクスポートすることもできます。DataTable.WriteXmlSchema(path) 関数は、データテーブルの構造を path 内の xml ファイルに書き込むために使用されます。次のコード例は、C# で DataTable.WriteXmlSchema(path) 関数を使用してテーブルの構造を xml ファイルに書き込む方法を示しています。
using System.Data;
namespace data_table {
  class Program {
    static void Main(string[] args) {
      DataTable workTable = new DataTable("Customers");
      DataColumn column1 = new DataColumn("Column1");
      DataColumn column2 = new DataColumn("Column2");
      workTable.Columns.Add(column1);
      workTable.Columns.Add(column2);
      DataRow row1 = workTable.NewRow();
      row1["Column1"] = "value1";
      row1["Column2"] = "value2";
      workTable.Rows.Add(row1);
      object[] o = { "object value1", "object value2" };
      workTable.Rows.Add(o);
      workTable.Rows.Add("direct value1", "direct value2");
      workTable.WriteXml("workTable.xml");
      workTable.WriteXmlSchema("workTableSchema.xml");
    }
  }
}
上記のコードでは、C# の workTable.WriteXmlSchema("workTableSchema.xml") 関数を使用して、workTable テーブルの構造を xml ファイル workTableSchema.xml にエクスポートしました。workTable.Schema.xml ファイルの内容を以下に示します。
<?xml version="1.0" standalone="yes"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Customers" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Customers">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Column1" type="xs:string" minOccurs="0" />
              <xs:element name="Column2" type="xs:string" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn