linq实现左连接的两种写法

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.Any() ? 0 : g.First().count
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值