You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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();

转换说明

  1. 原Linq中的双from语法属于隐式内连接,对应Lambda中的Join方法,逻辑和你提供的SQL内连接完全一致
  2. 先对SickRoom执行分组聚合:按HospitalId分组,计算最大楼层数(Max(FloorId))和房间总数(Count()),和原Linq的子查询逻辑完全匹配
  3. 通过HospitalId将Hospital表和聚合后的SickRoom结果集连接,最后投影出需要的字段
  4. 保留了原Linq中的OrderBy排序和ToList()转换为集合的操作

内容的提问来源于stack exchange,提问作者Anarch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:20:32