c# – 有一种比较可空和可以为空的对象的简洁方法吗?

前端之家收集整理的这篇文章主要介绍了c# – 有一种比较可空和可以为空的对象的简洁方法吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这样的代码
foreach (DataRow row in dataTable.Rows)
{
        if ((string)row["Forename"] != record.Forename)
        { 
             // Do something
        }
}

工作得很好,但是如果数据库中的row [“Forename”]为空,那么它实际上是DBNull,它不能将DBNull转换为字符串,或者执行DBNull和string之间的比较.有些值也是可以为空的< int>,它无法将DBNull与int进行比较?

有没有帮助方法让我做好比较,还是我必须自己写一个扩展方法

解决方法

您可以使用支持可空类型的 DataRow.Field扩展方法
foreach (DataRow row in dataTable.Rows)
{
    int? id = row.Field<int?>("ID");
    if(id.HasValue)
    {
        Console.Write("ID: " + id.Value);
    }
}

由于string是引用类型,因此默认情况下它将为null.您可以使用DataRow.IsNull来检查它是否是DBNull.Value:

foreach (DataRow row in dataTable.Rows)
{
    if(row.IsNull("Forename"))
    {
        // ...
    } 
    else
    {
        string foreName = row.Field<string>("Forename");
        Console.Write("ForeName: " + foreName);
    }
}

猜你在找的C#相关文章