C# DataTable ItemArray возвращает '{} ' - как я могу проверить значение null?

у меня есть DataTable resultSet; - Я пытаюсь проверить поля на null, но получаю " {} "(пустой набор ?) объект обратно. Поиск с использованием "{} " не дает никаких соответствующих решений.

это код, который работает не так, как ожидалось, когда поле "fk_id" равно null:

if (resultSet.Rows[0].ItemArray[resultSet.Columns.IndexOf("fk_id")] == null)
{
   //never reaches here
}

Примечание: использование индекса int вместо Columns.IndexOf() это не проблема.

также имеет ли "{} " какое-то другое имя в C#?

3 ответов


чтобы проверить столбец для DBNull в наборе данных, вы можете использовать функции isnull способ:

if (resultSet.Rows[0].IsNull("fk_id"))

ваше сравнение против null вероятно, сбой, потому что наборы данных не используют null для представления значения "database NULL" - они используют значение dbnull.Значение. Если вам нужно, чтобы ваш код работал так, как вы его представили, попробуйте следующее:

if (resultSet.Rows[0].ItemArray[resultSet.Columns.IndexOf("fk_id")] == DBNull.Value)

try
{
    if (DT.Rows[0][0] != null)
    {      
      //your code
    }    
}    
catch    
{    
    MessageBox.Show("AUTHANICATION FAILED.");    
}

пожалуйста, используйте:

dataTable.Select("FieldName is NULL")

это даст вам DataRows со значениями null в столбце FieldName.