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でなく、三項演算子のような記法にしてコンマで区切ることで実現できます。