У меня есть Персональная таблица и таблица сохраняемых транзакций.
Персональная таблица будет такой.
[ID] [AccNum] [Name] [AccType] [IsMainPerson] [IsDelected] [RegionId]
1, 001, David, JoinAcc, True, False, NY
2, 002, John, SoloAcc, True, False, NY
3, 001, Terry, JoinAcc, False, False, NY
Таблица сохраняемых транзакций будет такой.
[ID], [AccNum] [Amount] [IsDeleted]
1, 001, 10000, False
2, 002, 10000, False
3, 001, 15000, False
Iесть viewmodel для сохранения списка людей и totalcount. Мое представление итогового счета правильное, и у меня есть проблема с представлением списка людей.
Существует RegionId из другого списка. Когда я щелкаю этот список, я взял RegionId в качестве параметра и хочу показать свой результат. Итак, я сделал условное linq с RegionId и объединение двух таблиц равным «AccNum». Как я могу исправить мой запрос linq, чтобы получить желаемый результат, который я показал ниже.
Мой контроллер
[HttpGet]
public ActionResult GetSavingGroupByRegion(string id = null)
{
IEnumerable<SavingGroupByRegionViewModel> savingbyRegion = (from p in db.TB_PersonalInformation.Where(x => x.RegionID.Equals(id) && x.IsDeleted != true && x.IsMainPerson == true).AsQueryable()
join ADT in db.TB_AccountDetailTransaction on
p.AccountNumber equals ADT.BankAccountNumber
select new SavingGroupByRegionViewModel()
{
Name = p.Name,
AccountNumber = p.AccountNumber,
AccountType = p.AccountType,
Address = p.Address,
PersonAmount = ADT.Amount,
}).ToList();
SavingGroupByRegionViewModelWithCount savingbyRegionwithcount = new SavingGroupByRegionViewModelWithCount();
savingbyRegionwithcount.RgnResult = savingbyRegion.ToList();
savingbyRegionwithcount.TotalAmount = savingbyRegion.Select(t => Convert.ToDecimal(t.PersonAmount)).AsEnumerable().Sum();
savingbyRegionwithcount.TotalTownship = db.TB_PersonalInformation.Where(t => t.RegionID.Equals(id)).Select(t => t.RegionID).Distinct().Count();
savingbyRegionwithcount.TotalRegion = db.TB_PersonalInformation.Where(t => t.RegionID.Equals(id)).Select(t => t.RegionID).Distinct().Count();
savingbyRegionwithcount.TotalPerson = (from a in db.TB_AccountDetailTransaction join p in db.TB_PersonalInformation.Where(x => x.RegionID.Equals(id) && x.IsDeleted != true && x.IsMainPerson == true) on a.BankAccountNumber equals p.AccountNumber select a).Where(x => x.IsDeleted != true).Select(x => x.BankAccountNumber).Distinct().Count();
return PartialView("_SavingGroupByRegionPartial", savingbyRegionwithcount);
}
Моя модель представления
public class SavingGroupByRegionViewModelWithCount
{
public decimal TotalAmount { get; set; }
public int TotalTownship { get; set; }
public int TotalRegion { get; set; }
public int TotalPerson { get; set; }
public List<SavingGroupByRegionViewModel> RgnResult { get; set; }
}
public class SavingGroupByRegionViewModel
{
public string Name { get; set; }
public string AccountNumber { get; set; }
public string AccountType { get; set; }
public string Address { get; set; }
public string PersonAmount { get; set; }
}
Я хочу, чтобы результат просмотра был таким
Мой результат просмотра
- Просмотр счета -
{Total Amount} {Total Person Count}
35000 , 2
- Сохранение просмотра списка лиц, которое я получил -
{No} {Name} {AccNum} {AccType} {Amount}
1, David, 001, JoinAcc, 10000
2, David, 001, JoinAcc, 15000
3, John, 002, SoloAcc, 10000
- Просмотр списка сохраняемых лиц Я хочу показать -
{No} {Name} {AccNum} {AccType} {Amount}
1, David, 001, JoinAcc, 25000
2, Join, 002, SoloAcc, 10000
Я хочу показать только имя учетной записи основного лица и номер счета с суммой суммы. Я думаю, что-то не так в моем запросе linq. Я попытался .distinct (), и это не решило. Я не знаю, как группировать. Я надеюсь, что кто-то может мне помочь. Спасибо