背景
今天处理一个问题时,遇到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