2

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);
                    }
4

3 に答える 3

2

、またはnullではなく、単に使用してみてください。DBNull.ValueHasValue = 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 に答える