2

我想获取CategoryIdis的所有行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);
                    }
4

3 回答 3

2

尝试只使用null而不是DBNull.Value,或HasValue = false

于 2013-04-15T07:07:32.610 回答
1

您需要修改您的WHERE子句并Nullable<T>.HasValue 用作:

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

.Where(x => x.CategoryId == DBNull.Value)
于 2013-04-15T07:08:10.060 回答
0

如果要获取 is 的所有行CategoryIdnull则只需检查 nullable 是否已分配值:

db.GameByGameTypes.Where(x => !x.CategoryId.HasValue)
于 2013-04-15T07:07:41.870 回答