You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataRow多列非空校验代码失效,寻求问题排查及解决

代码问题分析

你的代码核心问题是逻辑运算符使用错误:

  • 需求是「所有指定列均非空时执行第一个分支,存在任意null值则执行else分支」,但你用了||(逻辑或)——只要其中一列非空,整个条件就会判定为true,直接进入第一个分支,完全忽略其他列是否为null。
  • 正确逻辑应该用&&(逻辑与):只有当所有指定列都不等于DBNull.Value时,才进入第一个分支;反之只要有一列是null,就会触发else分支。

修正后的条件示例:

if (row["SAP_ID"] != DBNull.Value 
    && row["CITY"] != DBNull.Value 
    && row["FINAL_SR_DATE"] != DBNull.Value 
    // 剩余列依次用&&连接
    && row["APPLICABLE_SITE_RENT"] != DBNull.Value)
{
    // 所有指定列非空时执行的逻辑
}
else
{
    // 存在null值时执行的逻辑
}

另外,为了提升代码可读性和维护性,建议把需要检查的列名存入数组,通过循环判断:

var requiredColumns = new[] { "SAP_ID", "CITY", "FINAL_SR_DATE", /* 其他需要检查的列名 */ };
bool allColumnsNonEmpty = true;
foreach (var col in requiredColumns)
{
    if (row[col] == DBNull.Value)
    {
        allColumnsNonEmpty = false;
        break;
    }
}

if (allColumnsNonEmpty)
{
    // 所有指定列非空逻辑
}
else
{
    // 存在null值逻辑
}

内容的提问来源于stack exchange,提问作者Nadeem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:54:24