我想获取CategoryId
为null
的所有行。我写下面的代码,但它给了我错误
“运算符'=='无法应用于'int?'类型的操作数和 System.DBNull
public Nullable<Int32> CategoryId { get; set; }
Game objGame;
var query = (from gametypebygametype in db.GameByGameTypes.Where(x => x.CategoryId == DBNull.Value)
join game in db.Games
on gametypebygametype.GameId equals game.GameId into joined
from game in joined.DefaultIfEmpty()
select new
{
game.GameId,
game.GameName
}
).Distinct();
List<Game> objlistGame = new List<Game>();
foreach (var item_temp in query)
{
objGame = new Game();
objGame.GameId = item_temp.GameId;
objGame.GameName = item_temp.GameName;
objlistGame.Add(objGame);
}
答案 0 :(得分:2)
尝试使用null
而不是DBNull.Value
或HasValue = false
。
答案 1 :(得分:1)
您需要修改WHERE
子句并使用Nullable<T>.HasValue
作为:
.Where(x => !x.CategoryId.HasValue)
来自
.Where(x => x.CategoryId == DBNull.Value)
答案 2 :(得分:0)
如果您要获取CategoryId
为null
的所有行,只需检查nullable是否已分配值:
db.GameByGameTypes.Where(x => !x.CategoryId.HasValue)