String.IsNull或Empty check与数据表单元格



如果我有一个数据表,我想查看特定单元格中包含的值是否为空,我会使用它。

foreach(DataRow row in DataTable.Rows)
{
bool isEmpty = String.IsNullOrEmpty(row["MyColumn"].ToString());
}

但是如果row["MyColumn"]中的值null会发生什么。.ToString()不会抛出一个例外吗?然而,当我尝试以下方法时..

bool isEmpty = String.IsNullOrEmpty(row["MyColumn"]);

我收到一个无效的参数异常,因为IsNullOrEmpty()方法正在寻找一个字符串对象。

那么,检查数据表中的特定单元格是空还是空的正确方法是什么?

将您的陈述更改为此语句,

bool isEmpty = String.IsNullOrEmpty(row["MyColumn"]?.ToString());

?. 表示运行进程。ToString(( 仅当 row["MyColumn"] 不为空时。

基本上只是为了完整起见而添加这个......但是,如果由于某种原因您没有使用 C# 6 或更高版本,则始终可以使用"老式方式":

bool isEmpty = row["MyColumn"] == null || string.IsNullOrEmpty(row["MyColumn"].ToString());

你可以改用DataRowField<T>()方法:

bool isEmpty = String.IsNullOrEmpty(row.Field<string>("MyColumn")); 

这提供了对行值的强类型访问。

您也可以将其与其他类型一起使用,因此无需解析intDataTime,例如。

var myDate = row.Field<DateTime>("MyDate");   // DateTime
var myInt = row.Field<int>("MyInt");          // int

它还适用于nullable类型:

var myDate = row.Field<DateTime?>("MyDate");  // DateTime? (Nullable)
if (myDate.HasValue) 
{
...
}

最新更新