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

如何用Linq/Lambda编写嵌套SQL查询?含指定SQL转换需求

将嵌套SQL转换为LINQ/Lambda表达式

首先拆解你的SQL逻辑:从sgrc_emisor表筛选出EmisorCuenta为3702406435的记录,同时通过两个子查询从SGRC_ConfigItem表中分别匹配SegmentoId和MarcaId对应的描述字段,最终返回Segmento、Marca、Producto、Familia这几个结果。

LINQ查询表达式写法

假设你使用Entity Framework,上下文对象为dbContext,实体类分别为SgrcEmisor(对应sgrc_emisor表)和SgrcConfigItem(对应SGRC_ConfigItem表),可以这样实现:

var result = from emisor in dbContext.SgrcEmisor
             where emisor.EmisorCuenta == "3702406435"
             select new 
             {
                 Segmento = (from config in dbContext.SgrcConfigItem
                             where config.ConfigId == "SEGM" && config.ConfigItemId == emisor.SegmentoId
                             select config.ConfigItemDescripcion).FirstOrDefault(),
                 Marca = (from config in dbContext.SgrcConfigItem
                          where config.ConfigId == "MRCA" && config.ConfigItemId == emisor.MarcaId
                          select config.ConfigItemDescripcion).FirstOrDefault(),
                 emisor.Producto,
                 emisor.Familia
             };

Lambda表达式写法

如果偏好链式调用的Lambda风格,对应的实现如下:

var result = dbContext.SgrcEmisor
    .Where(emisor => emisor.EmisorCuenta == "3702406435")
    .Select(emisor => new 
    {
        Segmento = dbContext.SgrcConfigItem
            .FirstOrDefault(config => config.ConfigId == "SEGM" && config.ConfigItemId == emisor.SegmentoId)
            ?.ConfigItemDescripcion,
        Marca = dbContext.SgrcConfigItem
            .FirstOrDefault(config => config.ConfigId == "MRCA" && config.ConfigItemId == emisor.MarcaId)
            ?.ConfigItemDescripcion,
        emisor.Producto,
        emisor.Familia
    });

补充说明

  • 使用FirstOrDefault()是因为原SQL中子查询无匹配项时会返回NULL,对应Linq里找不到结果时返回默认值(引用类型为null)。
  • 如果你的实体类属性名称和数据库字段名不完全一致,记得替换成实体类对应的属性名。
  • 若需要立即执行查询(而非延迟加载),可以在末尾追加.ToList()或.FirstOrDefault()等方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:48:05