无法访问 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;
 }

无法访问 linq 中的求和函数

您只需对"付款"列的分组结果求和:

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);