【问题标题】:Can you query total monthly amount paid by members from database table?您可以从数据库表中查询会员每月支付的总金额吗?
【发布时间】:2021-06-19 12:40:47
【问题描述】:

付款表包含 付款ID 会员ID 支付的金额 日期

我想在 C# 中使用 linq 单独查询每个月的金额总和。你能帮我查询一下吗?

【问题讨论】:

标签: c# database linq


【解决方案1】:
var result = (Your db context).tableName
.GroupBy(g => new { g.MonthColumn})
.Select(x => new
{
    x.Key.MonthColumn,
    amount = x.Sum(c => c.amount )
}).OrderBy(o => o.MonthColumn)
.ToList();

试试这个方法,它会帮助你找到你的结果

【讨论】:

    【解决方案2】:

    好问题!

    如果您的数据库每个成员每个月都有多年和多条记录

       var all = _context.PaymentTable.ToList();
            var min = all.Min(f => f.Date).Year;
            var max = all.Max(f => f.Date).Year;
            List<PaidQueryViewModel> paidlist = new List<PaidQueryViewModel>();
            for (int i = min; i < max; i++)
            {
                for (int m = 1; m < 11; m++)
                {
                    PaidQueryViewModel paid = new PaidQueryViewModel();
                     var start = new DateTime(i, m, 1);
                     var end = start.AddMonths(1).AddMinutes(-1);
                    string Month = start.ToString("MMM-yyyy"); // if you want string month name
                    var amount = all.Where(f => f.Date >= start && f.Date <= end).Sum(f => f.AmountPaid);
                    paid.Month = start;
                    paid.Amount = amount;
                    paidlist.Add(paid);
                }
            }
    
    
        public class PaidQueryViewModel 
        {
            public DateTime Month { get; set; }
            public decimal Amount { get; set; }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多