linq左接続を実現する2つの書き方

971 ワード

goodsのデータ:categoryId=1,count=4 categoryId=3,count=1 categoryId=10,count=15 db.Categoriesテーブルには、完全なカテゴリデータが含まれています.dbをクエリーする必要があります.Categories左にgoodsテーブルを接続すると、categoryId=1、count=4 categoryId=2、count=0 categoryId=3、count=1、categoryId=4、count=0…クエリ文の書き方:
var categories = from category in db.Categories
                 join g in goods
                 on category.Id equals g.categoryId into categoryGoods
                 from c in categoryGoods.DefaultIfEmpty()
                 select new
                 {
                     id = category.Id,
                     name = category.Name,
                     count = c == null ? 0 : c.count
                 };

照会方法の書き方
var categories = db.Categories
    .GroupJoin(goods, c => c.Id, g => g.categoryId, (c, g) => new
    {
        id = c.Id,
        name = c.Name,
        count = g.DefaultIfEmpty() == null ? 0 : g.DefaultIfEmpty().First().count
    });