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 true或false ...但是我尝试的任何东西似乎都可以比较它是否为null,它不会构建。
错误1运算符'=='不能 应用于'bool'类型的操作数 'System.DBNull'
答案 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上,但我不确定这是一个选项。