如何在 SSIS 中获取 C# 转换以允许我输出 null

How do I get a C# transform in SSIS to allow me to output a null

我正在从输入文件中读取一些文本,将其拆分为相关的列,然后尝试将这些列转换为正确的数据类型。对于第 2 列/价格调整,重要的是当列的输出为空时,这就是输出。目标列可以合法地包含 0 或负数,并且变化很大,因此 -1 甚至 999999 等虚拟值在这里都不好。

其中一列包含有效的小数(例如 125.123)、文本 N.A 或空字符串。我正在使用 Regexp 来处理文本值 - 或者至少在使用非空输出进行测试时,它们作为初始化值和空字符串出现,所以没关系。

然而,当我希望输出为空时,我总是得到错误。

有什么想法吗?我可以找到各种各样的东西来展示如何将它转换为默认值,如果它为空,我可以用 -100 初始化变量以实现它作为默认值,但我希望该列的实际输出为空,没有任何替代品。

我试过 GenOutputBuffer.priceadj_IsNull = true 但这没有帮助,这里可能是转移注意力,因为错误是值为 null,而不是我猜输出字段不能包含可为 null 的值。我无法取消 .Value 或它以红色下划线。我可以尝试使用 .HasValue 检查它是否有值,但是我怎么说,如果它没有值,请仍然在输出中输入 null?

代码的相关部分:

string col2str, col3str;
decimal? col2decN, col3decN;

col2decN = null; //DOES NOT WORK WHEN THIS IS NULL
col3decN = -100; //DOES WORK BUT DO NOT WANT A DUMMY FOR COLUMN 2

。 . .

col2str = Regex.Replace(SplitData[2], "[^0-9.]","");

try
{
col2decN = System.Convert.ToDecimal(col2str);
}
catch
{
//NOTHING
}

GenOutputBuffer.AddRow();
GenOutputBuffer.prodid = SplitData[0];
GenOutputBuffer.priceadj = col2decN.Value;

如果将字符串解析为十进制失败,只需将该列的 _IsNull 设置为 true

decimal dOut;
            if (decimal.TryParse(SplitData[1],out dOut))
            {
                Output0Buffer.C2 = dOut;
            }else
            {
                Output0Buffer.C2_IsNull = true;
            }