我有多个存储库,其中包含userId,paidDate和金额属性,例如Bills(userId, paidDate, amount)
Shoppings(userId, paidDate, amount)
等。我想获取金额的总和并按userId分组,并得到类似{user1: {amount1, amount2, amount3 ..}, user2: {amount4, ..}}
的内容>
我创建了一个包含上面所有存储库的expenseDetails模型。
public class ExpenseDetails { public IEnumerable<ApplicationUser> ApplicationUsers { get; set; } public IEnumerable<Bill> Bills { get; set; } public IEnumerable<Shopping> Shoppings { get; set; } public IEnumerable<Rent> Rents { get; set; } }
[并且我创建了一个辅助方法,用于通过使费用模型中的每个模型循环来计算金额之和。
public static Dictionary<string, List<double>> UsersExpense(ExpenseDetails expenseDetails) { Dictionary<string, List<double>> TotalCosts = new Dictionary<string, List<double>>(); List<double> Total = new List<double>(); double sum = 0; foreach (var user in expenseDetails.ApplicationUsers) { foreach (var item in expenseDetails.Shoppings) { if (item.ApplicationUserId == user.Id) { if (Convert.ToInt32(item.PaidDate.Split("/")[1]) == DateTime.Now.Month) { sum = item.Amount + sum; } } } Total.Add(sum); sum = 0; foreach (var item in expenseDetails.Bills) { if (item.ApplicationUserId == user.Id) { if (Convert.ToInt32(item.PaidDate.Split("/")[1]) == DateTime.Now.Month) { sum = item.Amount + sum; } } } Total.Add(sum); sum = 0; foreach (var item in expenseDetails.Rents) { if (item.ApplicationUserId == user.Id) { if (Convert.ToInt32(item.PaidDate.Split("/")[1]) == DateTime.Now.Month) { sum = item.Amount + sum; } } } Total.Add(sum); sum = 0; TotalCosts.Add(user.Id, Total.ToList()); Total.Clear(); } return TotalCosts; }
但是这不是编程的好方法。我如何才能通过最佳实践实现这一目标?我正在使用存储库模式。
我有多个存储库,其中包含userId,payedDate和金额属性,例如Bills(userId,paidDate,金额)Shoppings(userId,paidDate,金额)等。我想获取金额和组的总和...