无法访问 linq 中的求和函数
本文关键字:求和 函数 linq 访问 | 更新日期: 2023-09-27 17:56:05
我只想做一个简单的求和,就像我在sql中所做的那样。顺便说一下,我正在使用 EF6 和 T4 模板,如果这有什么不同的话。数据库优先设计。
从 tblPayemtns 中选择 SUM(付款),其中客户编号 = 2322
我以为会是做这样的事情。
var _myPayments = from c in portalEntities.tblPortalPayments.Where(p => p.userId == _userID)
group by c.paymentDate
select new
{
Sum =
};
但是当我去 c.Sum 它不在列表中时,我似乎无法访问总和 arggergate 函数,只是 eh 字段名称可用,我是否称我的 linq 错误,无法做到这一点,我想要的是 Sum= sum(c.paymentsToDate)。
在有人问之前,我不,他们很好,这是我的门户入口函数,它只是为我返回一个新的实体,以保持我的代码干净。
public portalEntities _portalEntities;
public portalEntities portalEntities
{
get
{
if (_portalEntities == null)
{
try
{
_portalEntities = new portalEntities();
}
catch (Exception ex)
{
}
}
return _portalEntities;
}
您只需对"付款"列的分组结果求和:
var _myPayments = from c in portalEntities.tblPortalPayments
.Where(p => p.userId == _userID)
group c by c.paymentDate into g
select new
{
Sum = g.Sum(x=>x.Payment)
};
更简单的方法是选择列,然后通过保留不必要的分组 by 子句对行求和:
var Sum = (from c in portalEntities.tblPortalPayments
.Where(p => p.userId == _userID)
select c.Payment).Sum();
或者另一种方式可以是:
var Sum = portalEntities.tblPortalPayments
.Where(p => p.userId == _userID)
.Sum(x=>x.Payment);
你可以像这样做:
var _myPayments =
from c in portalEntities.tblPortalPayments.Where(p => p.userId == _userID)
group by c.paymentDate
select new
{
}.Sum();
您还可以使用 lambda 表达式来执行查询:
var _myPayments = portalEntities.tblPortalPayments.Where(p => p.userId == _userID).Sum(x => x.Payments);