您好我正在检查 datatable 行值。如果该值不为null或为空,则检查该值是否为数字。否则请加入错误列表。如果值为null或为空,则指定null。
代码工作正常,但我想检查是否有更好的方法来执行此操作。任何建议将不胜感激。
这是我的代码。
if (!(row.IsNull("limit") || row["limit"].ToString().Length == 0))
{
//Check if value is number
if (int.TryParse(row["limit"].ToString().Trim(), out n))
{
query.limit = Convert.ToInt32(row["limit"].ToString().Trim());
}
else
{
errorList.Add("limit: Value:" + row["limit"].ToString());
}
}
//if value is null then assign null
else
{
query.limit = null;
}
答案 0 :(得分:4)
我在这里提到几点:
int.TryParse
解析row["limit"]
,您将在out参数中获得转换后的值,然后您无需使用Convert.ToInt32
将其再次转换为整数,请使用out参数而不是。if
)简化第一个?.
。row
作为null,在这种情况下,您需要在访问null
之前检查row["limit"]
,否则NullReference将成为结果如果您这样做,我认为会更加清晰和简单:
if (row != null && row["limit"]?.ToString() != "") // means row["limit"] definitely has some value
{
int currentLimit = 0;
if (int.TryParse(row["limit"].ToString().Trim(), out currentLimit))
{
query.limit = currentLimit ;
}
else
{
errorList.Add("limit: Value:" + row["limit"].ToString());
}
}
else
{
query.limit = null;
}
如果你没有使用c#6,那么row["limit"]?.ToString()
将不起作用,在这种情况下你必须使用这样的条件:
if (row != null && row["limit"] != null && row["limit"].ToString() != "")