首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.net #c与空不工作相比

ASP.net #c与空不工作相比
EN

Stack Overflow用户
提问于 2011-03-02 12:19:00
回答 3查看 675关注 0票数 0
代码语言:javascript
复制
       Artwork.ArtworkMyAvailableVotesDataTable dtCommon2 = new Artwork.ArtworkMyAvailableVotesDataTable();
        using (ArtworkTableAdapters.ArtworkMyAvailableVotesTableAdapter artworkTemplates = new ArtworkTableAdapters.ArtworkMyAvailableVotesTableAdapter())
        {
            artworkTemplates.Fill(dtCommon2, Master.loginData.loggedInUser.ID);
        }

        for (int i = 0; i < dtCommon2.Count; i++)
        {
            string voteStatus;
            if (dtCommon2[i].isApproved == System.DBNull.Value)
            {

isApproved返回空真或假..。但是,如果它是null,它将不会构建,那么我尝试的任何东西似乎都无法进行比较。

错误1运算符'==‘不能应用于'bool’和'System.DBNull'

类型的操作数

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-02 12:25:04

看起来isApproved是普通的布尔值。不管怎么说,如果是bool?,您可以安全地使用以下代码:

代码语言:javascript
复制
if (dtCommon2[i].isApproved == null || !dtCommon2[i].isApproved.Value)

编辑:您不是在使用普通的DataTable,因为原始值实际上可以是DBNull。我想您正在使用的组件已经处理了这个问题,并为您提供了“准备使用”类数据。因此,如果isApproved是布尔值,那么当字段为空时,它就已经是false了。

票数 2
EN

Stack Overflow用户

发布于 2011-03-02 12:26:09

您将得到此错误,因为我们不能将Null分配给bool。或者您需要将IsApproved设置为可为空的布尔值,可以通过声明类似bool来实现吗?IsApproved。或者您需要像dti != null那样进行检查。

UPDATE:尝试这个Convert.IsDBNull(对象)检查是否为null。您还可以使用Convert.ToBoolean(object)。如果对象为null,它将返回false。

票数 1
EN

Stack Overflow用户

发布于 2011-03-02 12:31:49

该错误清楚地表明isApproved是bool类型,而不是bool?或者其他任何东西。如果是这样的话,我建议您检查程序的逻辑。也许你一定要把它声明为bool?在ArtworkMyAvailableVotesDataTable上,但我不确定这是一种选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5167349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档