0
votes
       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)
            {

The isApproved returns null true or false... but nothing I try seems to work to compare if it's null, it wont build.

Error 1 Operator '==' cannot be applied to operands of type 'bool' and 'System.DBNull'

3

3 Answers

2
votes

Looks like isApproved is ordinary boolean.. anyway if it's bool? you can play it safe with such code:

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

Edit: You're not using ordinary DataTable where the raw value can be indeed DBNull.. I guess the component you're using is dealing with this already and present you with "ready to use" class of data. So if isApproved is boolean it will already be false when the field will be empty.

1
votes

The error clearly states isApproved is a bool type, not bool? or anything else. If this is the case, I suggest you to review the logic of the program. Maybe you must declare it as bool? on ArtworkMyAvailableVotesDataTable, but I'm not sure that's an option.

1
votes

You are getting this error because we cannot assign Null to bool. Either you need to make IsApproved as Nullable boolean, can be achieved by declaring like bool? IsApproved. Or you need to check like dt[i] != null.

UPDATE: Try this Convert.IsDBNull(object) check whether is null or not. You can also use Convert.ToBoolean(object). It will return false, if the object is null.