ASP.net #c比较null无效

时间:2011-03-02 12:19:00

标签: c# asp.net null

       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 tr​​ue或false ...但是我尝试的任何东西似乎都可以比较它是否为null,它不会构建。

  

错误1运算符'=='不能   应用于'bool'类型的操作数   'System.DBNull'

3 个答案:

答案 0 :(得分:2)

看起来isApproved是普通的布尔值..无论如何,如果它是bool?你可以用这样的代码安全地播放它:

if (dtCommon2[i].isApproved == null || !dtCommon2[i].isApproved.Value)

编辑:你没有使用普通的DataTable,其原始值确实可以是DBNull ..我猜你正在使用的组件已经处理了这个并且为你提供了“随时可用”的数据类。因此,如果isApproved是布尔值,则当字段为空时,它将已经为假。

答案 1 :(得分:1)

您收到此错误是因为我们无法将Null分配给bool。您是否需要将IsApproved设为Nullable布尔值,可以通过声明bool来实现?被批准。或者你需要检查像dt [i]!= null。

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

答案 2 :(得分:1)

错误明确指出isApproved是bool类型,而不是bool?或其他任何东西。如果是这种情况,我建议您查看该程序的逻辑。也许你必须宣布它为布尔?在ArtworkMyAvailableVotesDataTable上,但我不确定这是一个选项。