DataTable

LINQとDataTableは非常に相性が良く、一緒に使われることが多いため、ここで簡単に整理しておきます。

コンストラクタ

  1. DataTable()
    引数を指定せずに、DataTable クラスの新しいインスタンスを初期化します。
  2. DataTable(SerializationInfo, StreamingContext)
    DataTable と SerializationInfo を使用して、StreamingContext クラスの新しいインスタンスを初期化します。
  3. DataTable(String)
    指定したテーブル名を使用して DataTable クラスの新しいインスタンスを初期化します。
  4. DataTable(String, String)
    指定したテーブル名と名前空間を使用して、DataTable クラスの新しいインスタンスを初期化します。

このうち良く使われるのは、1と3です。3はインスタンス化と同時に「TableName」プロパティを設定します。

 

プロパティ

  • CaseSensitive
    テーブル内の文字列比較で大文字と小文字を区別するかどうかを示します。
  • ChildRelations
    この DataTable の子リレーションシップのコレクションを取得します。
  • Columns
    このテーブルに属する列のコレクションを取得します。
  • Constraints
    このテーブルに保持されている制約のコレクションを取得します。
  • DataSet
    このテーブルが属する DataSet を取得します。
  • HasErrors
    テーブルが属する DataSet のいずれかのテーブルのいずれかの行にエラーがあるかどうかを示す値を取得します。
  • ParentRelations
    この DataTable の親リレーションシップのコレクションを取得します。
  • PrimaryKey
    このデータ テーブルの主キーとして機能する列の配列を取得または設定します。
  • Rows
    このテーブルに属する行のコレクションを取得します。
  • TableName
    DataTable の名前を取得または設定します。
  • Container
    コンポーネントを格納するコンテナーを取得します。(Inherited from MarshalByValueComponent)
  • DefaultView
    フィルター処理されたビューまたはカーソル位置を含むことがある、テーブルのカスタマイズされたビューを取得します。
  • DesignMode
    コンポーネントが現在デザイン モードかどうかを示す値を取得します。(Inherited from MarshalByValueComponent)
  • DisplayExpression
    ユーザー インターフェイスにこのテーブルを表示するために使用する値を返す式を取得または設定します。 DisplayExpression プロパティを使用すると、ユーザー インターフェイスにこのテーブルの名前が表示されます。
  • Events
    コンポーネントに結び付けられているイベント ハンドラーのリストを取得します。(Inherited from MarshalByValueComponent)
  • ExtendedProperties
    カスタマイズされたユーザー情報のコレクションを取得します。
  • IsInitialized
    DataTable が初期化されているかどうかを示す値を取得します。
  • Locale
    テーブル内の文字列の比較に使用するロケール情報を取得または設定します。
  • MinimumCapacity
    このテーブルの初期開始サイズを取得または設定します。
  • Namespace
    DataTable に格納されているデータの XML 表現の名前空間を取得または設定します。
  • Prefix
    DataTable に格納されているデータの XML 表現の名前空間を取得または設定します。
  • RemotingFormat
    シリアル化形式を取得または設定します。
  • Site
    ISite の DataTable を取得または設定します。

 

メソッド(抜粋)

  • AcceptChanges()
    前回 AcceptChanges() を呼び出した以降にこのテーブルに対して行われたすべての変更をコミットします。
  • RejectChanges()
    このテーブルを読み込むか、前回 AcceptChanges() を呼び出した以降にこのテーブルに対して行われたすべての変更をロールバックします。
  • Clear()
    DataTable からすべてのデータを消去します。
  • Clone()
    すべての DataTable スキーマおよび制約を含め DataTable の構造体のクローンを作成します。
  • Compute(String, String)
    フィルター基準を満たしている現在の行で指定した式を計算します。
  • Copy()
    この DataTable の構造体だけでなくデータもコピーします。
  • CreateDataReader()
    この DataTableReader 内のデータに対応する DataTable を返します。
  • GetChanges()
    前回 DataTable を読み取るか、AcceptChanges() を呼び出した以降にこのデータセットに対して行われたすべての変更が格納されているこのデータセットのコピーを取得します。
  • GetChanges(DataRowState)
    前回 DataTable を読み取るか、AcceptChanges() を呼び出した以降にこのデータセットに対して行われたすべての変更が格納されているこのデータセットのコピーを、DataRowState によってフィルター処理した後で取得します。
  • GetErrors()
    エラーが含まれる DataRow オブジェクトの配列を取得します。
  • ImportRow(DataRow)
    プロパティ設定、元の値、および現在の値を保持し、DataRow を DataTable にコピーします。
  • Load(オーバーロードあり)
  • LoadDataRow(オーバーロードあり)
    特定の行を検索し、更新します。 一致する行が見つからない場合は、指定した値を使用して新しい行が作成されます。
  • Merge(オーバーロードあり)
    指定した DataTable を現在の DataTable とマージします。
  • NewRow()
    テーブルと同じスキーマで新しい DataRow を作成します。
  • NewRowArray(Int32)
    DataRow の配列を返します。
  • NewRowFromBuilder(DataRowBuilder)
    既存の行から新しい行を作成します。
  • ReadXml(多数のオーバーロードあり)
  • ReadXmlSchema(多数のオーバーロードあり)
  • Select()
    すべての DataRow オブジェクトの配列を取得します。
  • Select(String)
    フィルター基準と一致するすべての DataRow オブジェクトの配列を取得します。
  • Select(String, String)
    フィルター基準と一致するすべての DataRow オブジェクトの配列を、指定した並べ替え順で取得します。
  • Select(String, String, DataViewRowState)
    フィルター基準と一致するすべての DataRow オブジェクトの配列を、指定した状態と一致する並べ替え順に取得します。
  • WriteXml(多数のオーバーロードあり)
  • WriteXmlSchema(多数のオーバーロードあり)

 

補足

  • AcceptChanges()を呼び出すまでの変更はRejectChanges()でロールバック可能です。
  • DataTable.Clearは(DataTable.NewRowを使用して作成された)未添付の行を消去しますが、DataRowCollection.Clearは消去しません。
  • Copyはデータを含みますが、Cloneはデータを含みません。
  • Compute()では列は1列しか指定できません。ただし、expressionプロパティに複数列を使った計算式を埋め込んだ列を指定することで目的を果たすことができる場合があります。
  • GetChangesを引数なしで呼び出すと、最後にDataTableを読み取るか、AcceptChangesを呼び出した後に、このDataTable対して行われたすべての変更を含むDataTableを返します。引数を渡すと、上記変更のうち、該当の変更でフィルターされます。

 

SelectとGetChangesの違い

  • SelectはDataRowの配列を返却しますが、GetChangesはDataTableを返却します。(GetErrorsもDataRowの配列を返却)
  • GetChangesのフィルターは、各DataRowのRowStateプロパティ(DataRowState Enum)の値による下記5つの状態でしかフィルターできません。
    • Added 追加行
    • Deleted 削除行
    • Detached まだ正式に追加されていない追加行
    • Modified 変更行
    • Unchanged 何も変更されていない行
  • SelectのフィルターはDataViewRowState
    • Added (4 ) 新しい行。
    • CurrentRows (22 ) 変更されていない行、新しい行、および変更された行を含む現在の行。 既定では、DataViewRowState は CurrentRows に設定されています。
    • Deleted (8) 削除された行。
    • ModifiedCurrent (16 ) 変更された元のデータの現在のバージョン (ModifiedOriginal を参照)。
    • ModifiedOriginal (32 ) 変更されたデータの元のバージョン。 (データは変更されても、ModifiedCurrent として利用可能です)。
    • None (0) なし。
    • OriginalRows (42 ) 変更されていない行と削除された行を含む元の行。
    • Unchanged (2 ) 変更されていない行。

 

参考

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です