检查每个列表项是否为 Null

本文关键字:是否 Null 列表 检查 | 更新日期: 2023-09-27 18:30:53

我在写代码方面很差,因此有问题。下面我将项目从数据库添加到 SharePoint 列表中,同时检查是否有任何字段包含 DBNulls。如果可能的话,不必像下面那样对每一列执行检查,有人可以帮助我将其放入循环中吗?我将永远感激不尽

using (OdbcConnection connection = new OdbcConnection())
{
    connection.ConnectionString = "dsn=abc;uid=xyz;pwd=yuo;DataSource=aaa";
    connection.ConnectionTimeout = 100;
    connection.Open();
    OdbcCommand command_donor = new OdbcCommand("Select * From vw_SP_aaa_bbb", connection);
    try
    {
        using (OdbcDataReader reader = command_donor.ExecuteReader())
        {
            while (reader.Read())
            {
                var obj0 = reader.GetValue(48);
                var obj1 = reader.GetValue(0);
                var obj2 = reader.GetValue(33);
                var obj3 = reader.GetValue(47);
                var obj4 = reader.GetValue(42);
                var obj5 = reader.GetValue(42);

                ListItem oListItem_aaa = oList_aaa .AddItem(itemCreateInfo);

                if (obj0 == null || obj0.Equals(DBNull.Value))
                { oListItem_aaa["Title"] = ""; }
                else
                { oListItem_aaa["Title"] = reader.GetString(48).ToString(); }
                if (obj1 == null || obj1.Equals(DBNull.Value))
                { oListItem_aaa["aaa_x0020_ID"] = ""; }
                else
                { oListItem_aaa["aaa_x0020_ID"] = reader.GetString(0).ToString(); }
                if (obj2 == null || obj2.Equals(DBNull.Value))
                { oListItem_aaa["Excluded_x0020_By"] = ""; }
                else
                { oListItem_aaa["Excluded_x0020_By"] = reader.GetString(33).ToString(); }
                if (obj3 == null || obj3.Equals(DBNull.Value))
                { oListItem_aaa["Excluded_x0020_On"] = ""; }
                else
                { oListItem_aaa["Excluded_x0020_On"] = reader.GetDateTime(47).ToString("MM/dd/yyyy"); }
                if (obj4 == null || obj4.Equals(DBNull.Value))
                { oListItem_aaa["Reason"] = ""; }
                else
                { oListItem_aaa["Reason"] = reader.GetString(42).Substring(50, reader.GetString(42).ToString().Length-50); }
                if (obj5 == null || obj5.Equals(DBNull.Value))
                { oListItem_aaa["Publish"] = ""; }
                else
                { oListItem_aaa["Publish"] = reader.GetString(42).Substring(50, reader.GetString(42).ToString().Length - 50); }
                oListItem_aaa.Update();
                context.ExecuteQuery();
            }
        }
    }
    catch (Exception exception)
    {
        Console.WriteLine("The Error is:" + exception);
        Console.ReadLine();
    }
}

检查每个列表项是否为 Null

像这样使用短 IIF

oListItem_aaa["Excluded_x0020_By"] = (obj1 == null || obj1.Equals(DBNull.Value)) ? "" : reader.GetString(0).ToString();

var obj0 = (reader.GetValue(48) != DBNull.Value && !String.IsNullOrEmpty(Convert.ToString(reader.GetValue(48)))) ? reader.GetValue(48) : "");

在一行中。那么你不需要使用if,那么其他的...在MSDN的运算符?:(C#-Referenz)中也有描述。