我有一些像这样的代码:
DataTable table = new DataTable(); // New data table.
table.Columns.Add("ClientId", typeof(int));
table.Rows.Add(1);
table.Rows.Add(2);
table.Rows.Add(3);
table.Rows.Add(4);
table.Rows.Add(DBNull.Value);
table.Rows.Add(DBNull.Value);
table.Columns.Add("Section", typeof(string), "IIF(ClientId=Null,'Generic','Client')");
现在,任何行都在给客户端的值,本质上ClientId = Null总是返回false。
我在这里做错了什么?
我想要它,以便如果ClientId的行值为null,则Section值将是genereic,否则Section值将是Client。
任何建议?
答案 0 :(得分:2)
您可以将表情更改为
table.Columns.Add("Section", typeof(string),
"IIF((ISNULL(ClientId,0)=0),'Generic','Client')");
当然,ClientId列中不应出现零值,否则请选择值中保证不存在的其他值(如-1)
解释
ISNULL(expression, replacement_value)
在NULL的情况下,ISNULL的返回是替换值,然后将该值与固定常数零进行比较以产生IIF表达式所需的布尔结果。如果ISNULL和零的结果之间的比较为真,那么第一个字符串被选为Section列的值