是否有一种比较可空和可以为空的对象的简洁方法?

 手机用户2502863567 发布于 2023-01-12 10:02

我有这样的代码:

foreach (DataRow row in dataTable.Rows)
{
        if ((string)row["Forename"] != record.Forename)
        { 
             // Do something
        }
}

伟大的作品,但如果row["Forename"]null在数据库中,它实际上是DBNull在这里,它不能施放DBNull为一个字符串,或执行之间的比较DBNullstring.一些值也是nullable,它不能比较DBNullint?

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

1 个回答
  • 您可以使用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);
        }
    }
    

    2023-01-12 10:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有