有没有更好的方法来编写这个空检查?我正在检查一个表中的DataSet
空值。
if (dataSet == null || dataSet.Tables == null || dataSet.Tables[0].Rows == null)
{
Console.WriteLine($"Error at {nameof(dataSet)}");
return vatPeriodList;
}
我在 ADO.NET 中工作。
有没有更好的方法来编写这个空检查?我正在检查一个表中的DataSet
空值。
if (dataSet == null || dataSet.Tables == null || dataSet.Tables[0].Rows == null)
{
Console.WriteLine($"Error at {nameof(dataSet)}");
return vatPeriodList;
}
我在 ADO.NET 中工作。
你的检查没有意义,也忘记了一个重要的。
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
不为空并包含表,并且第一个表包含行。
尝试
if(dataSet?.Tables?.FirstOrDefault()?.Rows == null) {}
FirstOrDefault()
如果没有,则返回第一个条目或 null。