首页 > 解决方案 > 如何使用 LINQ 对包含当前数据的特定列求和

问题描述

我有一个查询,它应该首先将数据库中从 3 个月前到当前日期的金额相加,如果它超过我在条件中输入的特定金额,它应该返回 false。

              public Task<bool> SecurityCheck(CustomerData cust)
                {
                   var checkRsult = (from x in dbContext.CustomerModel
                    where x.CustomerReference == cust.CustomerReference
                    && x.Created >= DateTime.Today.AddMonths(-3)
                    select new
                    {
                       AccomulateAmount = x.AmountToTransfer
                    }).Sum(x => x.AccomulateAmount);
                    
                    }
                    
                    var finalResult=checkRsult+cust.Amount;
                    
                    if(finalResult>250000){
                    
                    //return false
                    
                    }       
                    else{
                    
                    //store th model in the db      
                    }

首先,我不确定我查询的方式是否正确(LINQ 部分),我的第二个问题是,有没有办法在单个查询中汇总包括当前传入的所有内容(cust.amount)?而不是先获取数据库总和,然后将当前的总和添加到其中?

标签: c#asp.net-core

解决方案


有点冗长,你可以做到

dbContext.CustomerModel
    .Where(cm => cm.CustomerReference == cust.CustomerReference && cm.Created >= DateTime.Today.AddMonths(-3))
    .Sum(cm => cm.AmountToTransfer)

                

推荐阅读