如何在C#中将指定Linq查询转换为Lambda表达式?
将Linq查询转换为Lambda表达式
转换后的Lambda代码
var domainModel = _ctx.Hospital .Join( // 先对SickRoom按HospitalId分组并计算聚合值 _ctx.SickRoom .GroupBy(x => x.HospitalId) .Select(group => new { HospitalId = group.Key, NumberOfFloors = group.Max(item => item.FloorId), NumberOfRooms = group.Count() }) .OrderBy(agg => agg.HospitalId), // 左表(Hospital)的连接键 hospital => hospital.HospitalId, // 右表(聚合后的SickRoom)的连接键 roomAggregate => roomAggregate.HospitalId, // 投影最终结果 (hospital, roomAggregate) => new { HospitalId = hospital.HospitalId, City = hospital.City, HospitalImage = hospital.HospitalImage, NumberOfFloors = roomAggregate.NumberOfFloors, NumberOfApartments = roomAggregate.NumberOfRooms } ) .ToList();
转换说明
- 原Linq中的双
from语法属于隐式内连接,对应Lambda中的Join方法,逻辑和你提供的SQL内连接完全一致 - 先对
SickRoom执行分组聚合:按HospitalId分组,计算最大楼层数(Max(FloorId))和房间总数(Count()),和原Linq的子查询逻辑完全匹配 - 通过
HospitalId将Hospital表和聚合后的SickRoom结果集连接,最后投影出需要的字段 - 保留了原Linq中的
OrderBy排序和ToList()转换为集合的操作
内容的提问来源于stack exchange,提问作者Anarch
相关产品推荐
相关产品推荐

