String.IsNullOrEmpty 检查数据 Table 单元格
String.IsNullOrEmpty check with Data Table cell
如果我有一个数据 Table 并且我想查看特定单元格中包含的值是否为空,我会使用它。
foreach(DataRow row in DataTable.Rows)
{
bool isEmpty = String.IsNullOrEmpty(row["MyColumn"].ToString());
}
但是如果 row["MyColumn"]
中的值是 null
会发生什么。 .ToString()
不会抛出异常吗?然而,当我尝试以下 ..
bool isEmpty = String.IsNullOrEmpty(row["MyColumn"]);
我收到无效参数异常,因为 IsNullOrEmpty()
方法正在查找字符串对象。
那么检查数据 Table 中的特定单元格是否为空或 null 的正确方法是什么?
将你的陈述改为这样,
bool isEmpty = String.IsNullOrEmpty(row["MyColumn"]?.ToString());
?。意味着 运行 进程 .ToString() 仅当行["MyColumn"] 不为空时。
基本上只是为了完整性而添加这个...但是如果出于某种原因你没有使用 C# 6 或更高版本,你总是可以这样做"old fashioned way":
bool isEmpty = row["MyColumn"] == null || string.IsNullOrEmpty(row["MyColumn"].ToString());
您可以改为使用 DataRow
:
的 Field<T>()
方法
bool isEmpty = String.IsNullOrEmpty(row.Field<string>("MyColumn"));
这提供了对行值的强类型访问。
您也可以将它与其他类型一起使用,因此无需解析 int
或 DataTime
,例如。
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)
{
...
}
如果我有一个数据 Table 并且我想查看特定单元格中包含的值是否为空,我会使用它。
foreach(DataRow row in DataTable.Rows)
{
bool isEmpty = String.IsNullOrEmpty(row["MyColumn"].ToString());
}
但是如果 row["MyColumn"]
中的值是 null
会发生什么。 .ToString()
不会抛出异常吗?然而,当我尝试以下 ..
bool isEmpty = String.IsNullOrEmpty(row["MyColumn"]);
我收到无效参数异常,因为 IsNullOrEmpty()
方法正在查找字符串对象。
那么检查数据 Table 中的特定单元格是否为空或 null 的正确方法是什么?
将你的陈述改为这样,
bool isEmpty = String.IsNullOrEmpty(row["MyColumn"]?.ToString());
?。意味着 运行 进程 .ToString() 仅当行["MyColumn"] 不为空时。
基本上只是为了完整性而添加这个...但是如果出于某种原因你没有使用 C# 6 或更高版本,你总是可以这样做"old fashioned way":
bool isEmpty = row["MyColumn"] == null || string.IsNullOrEmpty(row["MyColumn"].ToString());
您可以改为使用 DataRow
:
Field<T>()
方法
bool isEmpty = String.IsNullOrEmpty(row.Field<string>("MyColumn"));
这提供了对行值的强类型访问。
您也可以将它与其他类型一起使用,因此无需解析 int
或 DataTime
,例如。
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)
{
...
}