Fill() と GetData() と Expression プロパティの関係

DataColumn.Expression プロパティを使用すると、 DataTable 内のデータを自動で計算することができます。しかし、ある状況下でこの自動計算が行われない場合があるようです。

確認手順は以下のようになります。

  1. DataSet (xsd) を作成
  2. 作成した DataSet に TableAdapter を追加
  3. 何でもいいので、いくつかの列を SELECT
  4. Wizard によって作成された DataTable に列を追加
  5. 追加した列の Expression プロパティを設定
  6. 以下の内容を確認
    1. Fill() で取得
    2. GetData() で取得
    3. ObjectDataSource を使用して取得

上記結果を比較すると、 Fill() で取得したデータはExpression プロパティの内容が計算されていましたが、 GetData() と ObjectDataSource で取得したデータは計算が行われていませんでした。

ちょっとはまってしまうポイントだったので、備忘録としてメモしておきます。本当にこんな仕様なのか、それとも私の使用法が間違っているのかは不明です。この件に関して、何か情報をお持ちの方がいらっしゃいましたら、コメントなどをいただけると幸いです :-)