数据列表达式检查为null

时间:2014-07-08 16:17:15

标签: c# datatable expression

我有一些像这样的代码:

        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。

任何建议?

1 个答案:

答案 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列的值