c# - 带有 Lambda 表达式的 LINQ - 连接、分组依据、求和和计数

标签 c# sql linq lambda

如何将此 SQL 查询“翻译”为 Linq Lambda 表达式:

    SELECT  BN.DEUF, 
            BN.DESUPERINTENDENCIAREGIONAL,
            CR.SITUACAODIVIDA, 
            COUNT(CR.VLEFETIVAMENTELIBERADO), 
            SUM(CR.VLEFETIVAMENTELIBERADO)
   FROM BENEFICIARIO BN
   JOIN CREDITO CR ON BN.CDBENEFICIARIO = CR.CDBENEFICIARIO
   GROUP BY BN.DEUF,BN.DESUPERINTENDENCIAREGIONAL, CR.SITUACAODIVIDA
   ORDER BY BN.DEUF

到目前为止,我有:

var itens = db.CREDITO
            .Join(db.BENEFICIARIO, cr => cr.CDBENEFICIARIO, bn => bn.CDBENEFICIARIO,
                                (cr, bn) => new { cr, bn })
            .GroupBy(cr => cr.VLEFETIVAMENTELIBERADO)
            .Select(g => new { VLTOTAL = g.Sum(x => x.VLEFETIVAMENTELIBERADO) })
            .ToList();

最佳答案

你只是不在你的 sql 和你的 linq 中做同样的分组。

那么...让我们开始吧!

var itens = db.CREDITO
            .Join(db.BENEFICIARIO, cr => cr.CDBENEFICIARIO, bn => bn.CDBENEFICIARIO,(cr, bn) => new { cr, bn })
            .GroupBy(x=> new{x.bn.DEUF,x.bn.DESUPERINTENDENCIAREGIONAL, x.cr.SITUACAODIVIDA})
            .Select(g => new { 
                       g.Key.DEUF,
                       g.Key.DESUPERINTENDENCIAREGIONAL,
                       g.Key.SITUACAODIVIDA,
                       VLTOTAL = g.Sum(x => x.cr.VLEFETIVAMENTELIBERADO),
                       Count = g.Count() 
                       })
            .ToList();

关于c# - 带有 Lambda 表达式的 LINQ - 连接、分组依据、求和和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33803708/

相关文章:

c# - 检查给定的可执行文件是否经过数字签名且有效?

c# - 将枚举绑定(bind)到 LINQ 和 SelectListItem

asp.net-mvc - 获取在 Identity 2 中分配角色的用户列表

sql - 在Perl中使用DBI在一行中更新多个字段?

c# - 按值对复杂类型进行分组

c# - 特例生命周期分析

c# - ARCore – 如何在 C# 中将 YUV 相机帧转换为 RGB 帧?

c# - 尝试创建一个 256 位 key 以存储在 web.config 中

Java 1.6 和 Oracle JDBC 14 setQueryTimeout 不工作

mysql - 删除重复行?