Ваш чек не имеет смысла, а также забывает один важный.
DataSet.Tables
также не может быть null
, потому что это свойство только для чтения, вы не можете присвоить null
, поэтому вторая проверка не имеет смысла. dataSet.Tables[0].Rows
не может быть null
, поскольку это свойство только для чтения, вы не можете присвоить null
, поэтому последняя проверка является избыточной.
Но вы забыли, что DataSet
может быть пустым, поэтому не содержит DataTables
.В этом случае ваш if
создает исключение на dataSet.Tables[0]
.
Я бы использовал:
int? firstTablesRowCount = dataSet?.Tables.Cast<DataTable>().FirstOrDefault()?.Rows.Count;
if (firstTablesRowCount.GetValueOrDefault() == 0)
{
Console.WriteLine($"Error at {nameof(dataSet)}");
}
Это гарантирует, что DataSet
не является нулевым и содержит таблицы, а первая таблица содержит строки.