C# 如何将DBNull检查到linq或int32中?

C# 如何将DBNull检查到linq或int32中?,c#,wpf,asp.net-mvc,linq,C#,Wpf,Asp.net Mvc,Linq,我想获取CategoryId为null的所有行。我写了下面的代码,但它给了我错误 运算符“==”不能应用于“int”类型的操作数,并且 System.DBNull 公共可空类别ID{get;set;} 游戏对象; var query=(来自db.GameByGameTypes.Where中的gametypebygametype(x=>x.CategoryId==DBNull.Value) 加入游戏中的db.Games 在gametypebygametype.GameId上等于game.GameI

我想获取
CategoryId
null
的所有行。我写了下面的代码,但它给了我错误

运算符“==”不能应用于“int”类型的操作数,并且 System.DBNull

公共可空类别ID{get;set;}
游戏对象;
var query=(来自db.GameByGameTypes.Where中的gametypebygametype(x=>x.CategoryId==DBNull.Value)
加入游戏中的db.Games
在gametypebygametype.GameId上等于game.GameId
从joined.DefaultIfEmpty()中的游戏
选择新的
{
game.GameId,
game.GameName
}
).Distinct();
List objlistGame=新列表();
foreach(查询中的变量项_temp)
{
objGame=新游戏();
objGame.GameId=项目\临时GameId;
objGame.GameName=项目\临时GameName;
添加(objGame);
}

如果要获取
CategoryId
null
的所有行,请尝试使用
null
而不是
DBNull.Value
,或者
HasValue=false

,然后只需检查是否为null分配了值:

db.GameByGameTypes.Where(x => !x.CategoryId.HasValue)

您需要修改
WHERE
子句并将其用作:


也许你需要
x.CategoryId.HasValue==false
这不是你遇到问题的LINQ部分,而是
Nullable
@V4Vendetta感谢它为我所做的工作。
db.GameByGameTypes.Where(x => !x.CategoryId.HasValue)
.Where(x => !x.CategoryId.HasValue)
.Where(x => x.CategoryId == DBNull.Value)