首页 > 解决方案 > 如何使用 lambda 表达式 c# 加入 2 个表

问题描述

我有一个查询结果是我必须使用 lambda 连接两个表进行过滤,表达式是否只有一个,但我该如何处理两个?

这是我的 SQL 查询

    declare @Cod_Empresa int
set @Cod_Empresa = 9
select 
Margen.Codigo_Medidor, Margen.Fecha, Margen.Codigo_barra, Margen.Total_Balance
from tb_margen_operativo_cierre Margen, tb_medidor Medi
where Margen.Codigo_medidor = Medi.Codigo_Medidor
and Medi.Codigo_empresa  = @Cod_Empresa

这是我的 C# 代码

 int codigoempresa = 9 
 var margen = cm.tb_margen_operativo_cierre. //I need 2 tables tb_margen_operativo_cierre and tb_medidor
             Where(x => x.Fecha <= fin && x.Fecha >= inicio).
            GroupBy(r => r.Fecha).
            Select(v => new
            {

                Total_Balance = v.Sum(x => x.Total_Balance),

            }).AsEnumerable().Select(x => new tb_margen_operativo_cierre
            {

                Total_Balance = x.Total_Balance,


            }).ToArray();
            for (int i = 0; i < margen.Length; i++)
            {

                valormes = valormes + margen[i].Total_Balance;
                valorgraficodiario[i] = margen[i].Total_Balance;
            }

怎么做?谢谢

标签: c#lambda

解决方案


好吧,第一个,你必须改进你的查询,像这样:

SELECT 
    Margen.Codigo_Medidor, Margen.Fecha, Margen.Codigo_barra, Margen.Total_Balance
FROM 
    tb_margen_operativo_cierre Margen INNER JOIN tb_medidor Medi
ON 
    Margen.Codigo_medidor = Medi.Codigo_Medidor
WHERE 
    Medi.Codigo_empresa  = 9;

现在,如果您的表之间有关系,您可以在 LINQ 中执行此操作:

假设:一个Margen可以有很多Medi。在LinQ您可能会使用:

from Margen tb_margen_operativo_cierre 
join Medi in tb_medidor on Margen.Codigo_medidor equals Medi.Codigo_Medidor
where Medi.Codigo_empresa == 9;

结果应该与您的查询相同。


推荐阅读