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

多表、条件判断及聚合分组的SQL转LINQ Lambda等价实现问询

等价LINQ Lambda表达式

基于给定的数据表结构,与目标SQL语句等价的LINQ Lambda表达式如下(假设使用Entity Framework,上下文对象为db):

var result = db.UnitAlertStatus
    .Join(db.Unit, 
          uas => uas.AlertedUnitID, 
          u => u.ID, 
          (uas, u) => new { uas, u })
    .Join(db.UnitType, 
          combined => combined.u.UnitTypeID, 
          ut => ut.ID, 
          (combined, ut) => new { combined.uas, combined.u, ut })
    .Where(x => x.uas.EpochStamp > 1698150366500)
    .GroupBy(x => new 
    {
        x.uas.AlertedUnitID,
        Unit_HardwareID = x.u.HardwareID,
        Unit_Name = x.u.Name,
        UnitType_Name = x.ut.Name
    })
    .Select(g => new 
    {
        g.Key.AlertedUnitID,
        Count_Caution = g.Count(item => item.uas.UnitAlertStatus == 1),
        Count_Alarm = g.Count(item => item.uas.UnitAlertStatus == 3),
        Count_Critical = g.Count(item => item.uas.UnitAlertStatus == 7),
        g.Key.Unit_HardwareID,
        g.Key.Unit_Name,
        g.Key.UnitType_Name
    })
    .ToList();

说明

  • 两次Join操作对应原SQL中三个表的关联逻辑,分别关联UnitAlertStatus与Unit、Unit与UnitType
  • Where子句过滤时间戳大于指定值的记录
  • GroupBy按原SQL要求的字段分组
  • Select中通过Count结合条件判断,实现原SQL中Count(case...)的统计逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:02:33