2

以下は、GameByGameTypes と Categories から値をフェッチするときのコードですが、GameByGameTypes というテーブルには、CategoryId 列に NULL 値があります。だから私はNULLの代わりに0が欲しい

  Category objCategory;
                var query = (from gametypebygametype in db.GameByGameTypes.Where( x => x.GameTypeId == gametypeid)
                             join category in db.Categories
                             on gametypebygametype.CategoryId equals category.CategoryId into joined
                             from category in joined.DefaultIfEmpty()
                             select new 
                             {
                                 category.CategoryId ,
                                 category.CategoryName
                             }
                             ).Distinct();
                List<Category> objlistCategory = new List<Category>();
                foreach (var item_temp in query)
                {
                    objCategory = new Category();
                    objCategory.CategoryId = item_temp.CategoryId;
                    objCategory.CategoryName = item_temp.CategoryName;
                    objlistCategory.Add(objCategory);

                }
4

3 に答える 3

0

GetValueOrDefault を使用してみてください

Category objCategory;
                        var query = (from gametypebygametype in db.GameByGameTypes.Where( x => x.GameTypeId == gametypeid)
                                     join category in db.Categories
    on new {A = gametypebygametype.categoryID.GetValueOrDefault(0)}
                equals new {A = category.categoryID}
     into joined
                                     from category in joined.DefaultIfEmpty()
                                     select new 
                                     {
                                         category.CategoryId ,
                                         category.CategoryName
                                     }
                                     ).Distinct();
                        List<Category> objlistCategory = new List<Category>();
                        foreach (var item_temp in query)
                        {
                            objCategory = new Category();
                            objCategory.CategoryId = item_temp.CategoryId;
                            objCategory.CategoryName = item_temp.CategoryName;
                            objlistCategory.Add(objCategory);

                        }
于 2013-04-29T22:56:14.063 に答える
0

これを処理するには、次の 3 つの方法があります。

  1. データベースに列not nullを設定し、デフォルトを列0に設定できます。

  2. カテゴリ プロパティを設定できますint? CategoryId

  3. デフォルト値で DefaultIfEmpty を使用するようにクエリを変更できます

            var query = (from gametypebygametype in db.GameByGameTypes.Where( x => x.GameTypeId == gametypeid)
                         join category in db.Categories
                         on gametypebygametype.CategoryId equals category.CategoryId into joined
                         from category in joined.DefaultIfEmpty( new 
                                                                 {
                                                                    CategoryId=0, 
                                                                    Categoryname=""
                                                                 })
                         select new ...
    
于 2013-04-15T05:10:36.930 に答える