使用Queryable.Join实现多表连接查询

本文介绍了如何在EF Model中利用Queryable.Join方法进行多表连接查询,特别是涉及Field表和Reservoir表的关联操作。通过示例代码解释了Join方法的4个参数用途,并展示了将查询结果封装到UpdatedReservoir实体类中的过程。
摘要由CSDN通过智能技术生成

背景

今天处理一个问题时,遇到EF Model中多表连接查询的情况,于是学习了一下Queryable.Join()的用法。由于本人是Linq新手,很多地方都看不懂,只能依葫芦画瓢。

业务说明

1) 一个EF Model名为Daks,对应的DbContext名为DaksContext

2) 此处要进行Field表(Id, FieldName,...)和Reservoir表(Id, FieldId, Reservoir Code, FieldCode, Resource,... )的关联查询,Reservoir.FieldId是外键对应Field.Id

3) 将两张表的部分列数据查询出来放入实体类UpdatedReservoir中

代码示例

DaksContext dc = new DaksContext();
List<UpdatedReservoir> toReservoirs =
    dc.Reservoirs
    .Join(dc.Fields, r => r.FieldId, f => f.Id,
        (r, f) => new UpdatedReservoir()
        {
            SqlServerFieldId = r.FieldCode,
            SqlServerReservoirCode = r.OriginalReservoirCode,
            SqlServerUniqueName = f.FieldName + "(" + r.ReservoirUnit + ")" + "(" + r.Resource + ")"
        })
    .OrderBy(i => i.SqlServerUniqueName
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值