В моем приложении ASP.NET MVC я хочу создать представление сведений о запросе и общую сумму, которую имеет каждый запрос.
Вот как я создаю свою модель просмотра
public class ApprovedMedicals
{
public int ReqId { get; set; }
public int EmpNo { get; set; }
public string Company { get; set; }
public string EmpName { get; set; }
public string ApprovedMedicalNo { get; set; }
public decimal TotalAmount { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime? ApprovedDate { get; set; }
}
Чтобы получить и назначить данные для этого, я использую 3 таблицы базы данных. AppRequest
является основным Medical
подключен через внешний ключ AppRequest
и MedicalExpences
подключен через Medical
.
Таким образом, один запрос может иметь 1 или более записей в таблице MedicalExpences
. Итак, я хочу получить сумму AmountClaimed
из этой таблицы и присвоить ее свойству Total Amount
View Model. Я застрял в том, как рассчитать сумму и назначить ее части столбца. Не могли бы вы помочь мне здесь, пожалуйста?
List < ApprovedMedicals > report = (from a in db.AppRequest
join m in db.Medical on a.Id equals m.Req_Id
join me in db.MedicalExpences on m.Id equals me.Medic_Id
join e in db.CreateEmployee on a.Create_By equals e.Id
join c in db.CreateCompany on e.CompanyId equals c.Id
where m.HodApproval == true && m.HodApprovedDate <=
ToDate && m.HodApprovedDate >= FromDate
select new ApprovedMedicals {
EmpNo = e.EmpNo,
EmpName = e.EmpName,
Company = c.CompanyName,
ApprovedMedicalNo = m.ApproveNumber,
ApprovedDate = m.HodApprovedDate,
CreatedDate = a.Created_Date,
ReqId = a.Id,
TotalAmount = // Here I want to get the Total of me.Amount
}).OrderByDescending(x => x.ReqId).ToList();
Пытаться :
List < ApprovedMedicals > report = (from a in db.AppRequest
join m in db.Medical on a.Id equals m.Req_Id
join me in db.MedicalExpences on m.Id equals me.Medic_Id
join e in db.CreateEmployee on a.Create_By equals e.Id
join c in db.CreateCompany on e.CompanyId equals c.Id
where m.HodApproval == true && m.HodApprovedDate <=
ToDate && m.HodApprovedDate >= FromDate
select new ApprovedMedicals {
EmpNo = e.EmpNo,
EmpName = e.EmpName,
Company = c.CompanyName,
ApprovedMedicalNo = m.ApproveNumber,
ApprovedDate = m.HodApprovedDate,
CreatedDate = a.Created_Date,
ReqId = a.Id,
TotalAmount = 0
}).OrderByDescending(x => x.ReqId).ToList();
foreach (var item in report)
{
var Id = db.Medical.Where(x => x.Req_Id == item.ReqId).Select(x => x.Id).FirstOrDefault();
item.TotalAmount = db.MedicalExpences.Where(x => x.Medic_Id == Id).Sum(x => x.Amount);
}