[英]LINQ with Lambda expression - Join, Group By, Sum and Count
How can I "translate" this SQL query to Linq Lambda Expression: 如何将该SQL查询“翻译”为Linq Lambda Expression:
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
Until now I have: 到目前为止,我有:
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();
You just don't do the same group by in your sql and your linq. 您只是不在sql和linq中进行相同的分组。
So... let's do it ! 所以...开始吧!
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();
You will have to create an anonymous type in Group By
clause to group by multiple columns. 您将必须在
Group By
子句中创建一个匿名类型以按多列分组。 This should work:- 这应该工作:
var itens = db.CREDITO
.Join(db.BENEFICIARIO, cr => cr.CDBENEFICIARIO, bn => bn.CDBENEFICIARIO,
(cr, bn) => new { cr, bn })
.GroupBy(x => new {
x.cr.SITUACAODIVIDA,
x.bn.DEUF,
x.bn.DESUPERINTENDENCIAREGIONAL
}
)
.Select(g => new {
DEUF = g.Key.DEUF,
SITUACAODIVIDA = g.Key.SITUACAODIVIDA,
VLTOTAL = g.Sum(z => z.cr.VLEFETIVAMENTELIBERADO),
Count = g.Count()
}
).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.