如果我们在Create一个DataTable时需要创建这样一列,它的结果是根据一定的表达式自动生成的,那么我们可以使用DataColumn的Express性质来完成这样的任务.
假设我们要完成下面的逻辑:
If ColumnA - ColumnB > 100, ColumnC = “Yes“, else ColumnC = “No“
则创建DataTable的代码如下:
// Create the DataTable
DataTable dt = new DataTable("Expressions");
![](/Images/OutliningIndicators/None.gif)
// Create ColumnA and ColumnB
DataColumn columnA = new DataColumn("columnA", typeof(int));
DataColumn columnB = new DataColumn("columnB", typeof(int));
![](/Images/OutliningIndicators/None.gif)
// Create ColumnC
DataColumn columnC = new DataColumn("columnC", typeof(string),
"IIF(columnA - columnB > 100,'Yes','No')");
![](/Images/OutliningIndicators/None.gif)
// Add Columns to DataTable
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
dt.Columns.AddRange(new DataColumn[]
{ columnA, columnB, columnC });
![](/Images/OutliningIndicators/None.gif)
// Add a Couple of Rows Supplying ColumnA and ColumnB Data![](/Images/dot.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
dt.Rows.Add(new object[]
{ 200, 80 });
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
dt.Rows.Add(new object[]
{ 100, 10 });
![](/Images/OutliningIndicators/None.gif)
大家可以看到,这里面用到了IIF这样的函数,它的语法如下:
IIF(expr, truepart, falsepart)
expr -- 表达式
truepart -- 表达式成立时列的值
falsepart -- 表达式不成立时列的值
原文: http://davidhayden.com/blog/dave/archive/2006/07/09/DataColumnExpressions.aspx