检查每个数据列是否为null不起作用



我有dt,其中有4行35列。所以我想检查每一行是否提供了null值。如果提供了null,则打破条件;如果没有,则继续。所以我尝试了下面的代码,但它不起作用,并且也接受了null值。

foreach (DataRow row in dt.Rows)
{
if (row["SAP_ID"] != DBNull.Value || row["CITY"] != DBNull.Value || row["FINAL_SR_DATE"] != DBNull.Value || row["FINAL_SO_DATE"] != DBNull.Value || row["INVOICE_DATE"] != DBNull.Value || row["IP_ID"] != DBNull.Value || row["APPLICABLE_MSA"] != DBNull.Value || row["SITE_CATEGORY"] != DBNull.Value || row["ID_OD"] != DBNull.Value || row["RFI_DATE"] != DBNull.Value || row["BILL_START_DATE"] != DBNull.Value || row["BILL_END_DATE"] != DBNull.Value || row["NO_OF_OPCO"] != DBNull.Value || row["ACTUAL_RENT_AMT"] != DBNull.Value || row["TENURE"] != DBNull.Value || row["GSM_ANTENNA_EXC_SAIL"] != DBNull.Value || row["GSM_ANTENNA_NOTEXC_SAIL"] != DBNull.Value || row["REV_TOT_CNT_GSM_ANTENNA"] != DBNull.Value || row["MW_ANTENNA_OF_UPTO06_DIA"] != DBNull.Value || row["MW_ANTENNA_OF_12DIA"] != DBNull.Value || row["MW_ANTENNA_OF_GREATER12_DIA"] != DBNull.Value || row["HEIGHT_OF_HEIGHEST_ANTENNA"] != DBNull.Value || row["WEIGHT_OF_TOWER_TOP_BTS"] != DBNull.Value || row["WIND_SPEED"] != DBNull.Value || row["POWER_RATING_OF_BTS"] != DBNull.Value || row["FLOOR_SPACE_INDOOR"] != DBNull.Value || row["FLOOR_SPACE_OUTDOOR"] != DBNull.Value || row["EB_STATUS_VALUE"] != DBNull.Value || row["NO_OF_US"] != DBNull.Value || row["HIGHER_RENT"] != DBNull.Value || row["RRH_COUNT"] != DBNull.Value || row["VOLUME_DISCOUNT"] != DBNull.Value || row["VENDOR_NAME"] != DBNull.Value || row["CIRCLE"] != DBNull.Value || row["APPLICABLE_SITE_RENT"] != DBNull.Value)
{
... // do something here
}
else
{
... // do something here
}
}

请指出这里出了什么问题。

长话短说

||->&&

解释

你在问

x不同于null或y不同于null。。。

何时计算结果为true当且仅当至少有一个操作数与null不同时,这是真的。因此,您将不得不检查

x不同于null,y不同于null。。。

或者:

不是(x为null或y为null或…(

底层逻辑是检查所有是否与null不同,或者其中任何一个都是null都是错误的。

if (row["SAP_ID"] != DBNull.Value || row["CITY"] != DBNull.Value /* || Following columns */)

上面的if语句正在检查是否有任何列包含值,这与您的要求相矛盾:

如果提供了null,则打破条件,如果没有,则继续


方法1:检查所有列是否包含值

foreach (DataRow row in dt.Rows)
{
if (row["SAP_ID"] != DBNull.Value && row["CITY"] != DBNull.Value /* && Following columns */)
{
// All columns are with value
}
// TO-DO
}

方法2:检查任何没有值的列

foreach (DataRow row in dt.Rows)
{
if (row["SAP_ID"] == DBNull.Value || row["CITY"] == DBNull.Value /* || Following columns */)
{
// There are column(s) without value
}
// TO-DO
}

最新更新