DataColumnCollectionクラス

プロパティ

プロパティ 内容
DataColumn Item[Int32] 指定のインデックスの位置にあるDataColumn
DataColumn Item[String] 指定の名前のDataColumn。存在しない場合はnull
     

Item[]

基本的に大文字/小文字が区別されますが、区別しないときに重複する項目がなければ、区別されません。Item[String] - DataColumnCollection.Item[] Property (System.Data) | Microsoft Learn

内部的にはDictionary<TKey,TValue>.TryGetValue()での取得に失敗しときに大文字/小文字を区別しない取得が試みられるため、最初から区別して指定すべきです。this - DataColumnCollection.cs

DataTable table = new DataTable();
table.Columns.Add("col");
table.Columns.Add("ab");
table.Columns.Add("AB");

DataColumn col1 = table.Columns["col"]; // ok
DataColumn col2 = table.Columns["COL"]; // ok
DataColumn col3 = table.Columns["Col"]; // ok

DataColumn ab1 = table.Columns["ab"]; // ok
DataColumn ab2 = table.Columns["AB"]; // ok
DataColumn ab3 = table.Columns["Ab"]; // ArgumentException「指定された名前 'Ab' は、大文字小文字を区別しない場合は、コレクション オブジェクトの中で一致する名前が少なくとも 2 つあります。大文字小文字を区別する場合は、一致する名前はありません。」

メソッド

メソッド 機能
Add() DataColumnオブジェクトを作成して追加できる
Remove(DataColumn) コレクションから、指定のDataColumnを除去できる
   

Add()

public System.Data.DataColumn Add (
    string columnName, // 列の名前 (ColumnNameプロパティの値)
    Type type,         // 列のデータの型 (DataTypeプロパティの値)
    string expression  // 式 (Expressionプロパティの値)
    );

既に追加してあるDataColumnを、同一または異なるDataTableに追加しようとすると、ArgumentExceptionが投げられます。

DataColumn column = new DataColumn();

DataTable table1 = new DataTable();
DataTable table2 = new DataTable();

table1.Columns.Add(column);
table1.Columns.Add(column); // ArgumentException「列 'Column1' は既にこの DataTable に属しています。」
table2.Columns.Add(column); // ArgumentException「列 'Column1' は既に別の DataTable に属しています。」

Remove()

コレクションから列を除去すると、その列のデータも除去されます。

DataTable table = new DataTable();
DataColumn column1 = table.Columns.Add();
DataColumn column2 = table.Columns.Add();
DataColumn column3 = table.Columns.Add();

DataRow row = table.Rows.Add(1, 2, 3);

row.AcceptChanges();
table.Columns.Remove(column2);

object[] obj = row.ItemArray; // "1", "3" (除去した列のデータが失われている)
DataRowState state = row.RowState; // Unchanged

イベント

イベント 発生タイミング
CollectionChangeEventHandler CollectionChanged 列が追加または除去されて、コレクションが変更されるとき
Events - DataColumnCollection Class (System.Data) | Microsoft Learn

CollectionChanged

列挙子  
Add  
Refresh  
Remove  
Fields - CollectionChangeAction Enum (System.ComponentModel) | Microsoft Learn
Microsoft Learnから検索