在SSIS的C#脚本中如何为Int类型字段赋值Null值?
解决方案
首先要明确:C#中的值类型(比如Int16/short)本身无法存储null,所以第一步需要将Output0Buffer.METHODID的类型修改为可空值类型short?(等价于Nullable<Int16>),这样才能直接赋值null。
接下来是具体的代码处理逻辑,需要同时处理SharePoint返回值为null或DBNull.Value的情况,还要避免解析失败抛出异常:
// 获取SharePoint返回的原始值 var rawMethodId = listItem["METHOD_ID"]; // 判断是否为空值 if (rawMethodId == null || rawMethodId == DBNull.Value) { Output0Buffer.METHODID = null; } else { // 尝试解析为Int16,避免非数字字符串导致异常 if (Int16.TryParse(rawMethodId.ToString(), out short parsedValue)) { Output0Buffer.METHODID = parsedValue; } else { // 解析失败时也赋值null,或者根据业务需求设置默认值 Output0Buffer.METHODID = null; } }
关键说明
- 如果无法修改
Output0Buffer.METHODID的类型(比如它是固定生成的实体类),那只能用一个约定的特殊值(比如-1)来代表null,但这不符合你直接赋值null的需求,所以优先推荐修改为可空值类型。 - 使用
Int16.TryParse而非Int16.Parse,可以在原始值不是有效数字时避免抛出异常,逻辑更健壮。 - SharePoint返回空字段时,可能返回
null或DBNull.Value,所以两种情况都要判断。
内容的提问来源于stack exchange,提问作者Henry-Philippe Dumont LU
相关产品推荐
相关产品推荐

