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'
类型的操作数
发布于 2011-03-02 12:25:04
看起来isApproved是普通的布尔值。不管怎么说,如果是bool?,您可以安全地使用以下代码:
if (dtCommon2[i].isApproved == null || !dtCommon2[i].isApproved.Value)编辑:您不是在使用普通的DataTable,因为原始值实际上可以是DBNull。我想您正在使用的组件已经处理了这个问题,并为您提供了“准备使用”类数据。因此,如果isApproved是布尔值,那么当字段为空时,它就已经是false了。
发布于 2011-03-02 12:26:09
您将得到此错误,因为我们不能将Null分配给bool。或者您需要将IsApproved设置为可为空的布尔值,可以通过声明类似bool来实现吗?IsApproved。或者您需要像dti != null那样进行检查。
UPDATE:尝试这个Convert.IsDBNull(对象)检查是否为null。您还可以使用Convert.ToBoolean(object)。如果对象为null,它将返回false。
发布于 2011-03-02 12:31:49
该错误清楚地表明isApproved是bool类型,而不是bool?或者其他任何东西。如果是这样的话,我建议您检查程序的逻辑。也许你一定要把它声明为bool?在ArtworkMyAvailableVotesDataTable上,但我不确定这是一种选择。
https://stackoverflow.com/questions/5167349
复制相似问题