LoginSignup
3

More than 5 years have passed since last update.

DataColumn.ExpressionでIF文

Posted at

DataColumn.Expression

DataTableに存在するデータを加工して、新たな列を追加したいことがあると思います。
その際は

//DataTable data;
data.Columns.Add("列名", , "式");

//テーブルのCol1列からCol2列の値を引いた列をテーブルに追加する例 
data.Columns.Add("Col1minusCol2", typeof(double), "Col1 - Col2");

という書式で、DataTable.Columns.Add()の第三引数のExpressionに計算したい式を記述することで実現できます。
(集約などの計算ができるが、詳細は割愛)

では、その式中で条件分岐したい場合はどのように記述すればよいのでしょうか?

IIF()

以下のように書けばよいようです。

// IIFの書式
"IIF(条件式, 真の場合の値, 偽の場合の値)"

//Col2列からCol1列への変化率を求める例
//Col1列が0だった場合に0除算となるので、その場合はExpression中でIF文を使って結果を0にしたい
data.Columns.Add("Col2toCol1", typeof(double), 
    "IIF(Col2 = 0, 0, (Col1 - -Col2) / Col2)");

このように、IFやCASEではなく、IIFを使い、THENやELSEでなく、三項演算子のような記法にしてコンマで区切ることで実現できます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3