【发布时间】:2021-06-19 12:40:47
【问题描述】:
付款表包含 付款ID 会员ID 支付的金额 日期
我想在 C# 中使用 linq 单独查询每个月的金额总和。你能帮我查询一下吗?
【问题讨论】:
-
这能回答你的问题吗? Group list by month
付款表包含 付款ID 会员ID 支付的金额 日期
我想在 C# 中使用 linq 单独查询每个月的金额总和。你能帮我查询一下吗?
【问题讨论】:
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();
试试这个方法,它会帮助你找到你的结果
【讨论】:
好问题!
如果您的数据库每个成员每个月都有多年和多条记录
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; }
}
【讨论】: