如何检查Datarow值是否为空

39

请告诉我,这是否是在DataRow中检查空值并需要返回字符串的正确方法

 Convert.ToString(row["Int64_id"] ?? "")

或应该像使用 DBNull.Value 进行检查。

需要比原来更小很多。

if(row["Int64_id"] != DBNull.Value){...}else if{}

1
row["ColumnName"] != DBNull.Value,你也可以自己尝试类似的东西。一种方法是使用调试器! - mybirthname
2个回答

84

使用DataRow.IsNull(string columnName)方法检查数据列是否为空。

if (!row.IsNull("Int64_id"))
{
  // here you can use it safety
   long someValue = (long)row["Int64_id"];
}

使用列的索引或者DataColumn实例来进行重载。如果您确定索引,请使用索引版本,它比其他选项更快。


返回类型为 string,并且要小得多。 - AleksP
检查值是否正确是这样做的正确方式。 :) - Felipe Oriani

22
我们已经创建了一个扩展类,可以帮助处理这些情况。
public static class DataRowExtensions
  {
    public static T FieldOrDefault<T>(this DataRow row, string columnName)
    {
      return row.IsNull(columnName) ? default(T) : row.Field<T>(columnName);
    }
  }

你可以按照以下方式使用它:
int id = dataRow.FieldOrDefault<int>("Id");

你会如何将这个放在 foreach 的外面? - Demodave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接