Linq Sum";“金额”;从一个表中选择并显示在另一个表中

Linq Sum";“金额”;从一个表中选择并显示在另一个表中,linq,asp.net-mvc-4,linq-to-sql,entity-framework-6,Linq,Asp.net Mvc 4,Linq To Sql,Entity Framework 6,我有两个表名为: TBLPA学生法案, TBLPartientBill详细信息 我想做的是在ID为“66”的tblPatientBill中,tblPatientBillDetail中有两条记录。从第二个表中,我想添加金额值,并使用linq在主表中显示为合计值,我对其执行如下操作: public ActionResult Edit(PatientViewModel model) { List<tblPatientBillDet

我有两个表名为:

TBLPA学生法案,

TBLPartientBill详细信息

我想做的是在ID为“66”的tblPatientBill中,tblPatientBillDetail中有两条记录。从第二个表中,我想添加金额值,并使用linq在主表中显示为合计值,我对其执行如下操作:

    public ActionResult Edit(PatientViewModel model)
            {
               List<tblPatientBillDetail> lst = new List<tblPatientBillDetail>();
               tblPatientBill tmp = new tblPatientBill();

               tmp = db.tblPatientBill.Where(x=>x.ID == PatientBillID && x.is_active == true).ToList();


                        lst = db.tblPatientBillDetails.Where(x=>x.PatientBillID == PatientBillID && x.is_active == true).ToList();

                        foreach (var test in lst)
                        {

                            model.Amount += lst.Amount;
                        }
                        Session["templist"] = lst;
}
公共操作结果编辑(PatientViewModel模型)
{
List lst=新列表();
tblPatientBill tmp=新的tblPatientBill();
tmp=db.tblPatientBill.Where(x=>x.ID==PatientBillID&&x.is_active==true).ToList();
lst=db.tblPatientBillDetails.Where(x=>x.PatientBillID==PatientBillID&&x.is_active==true)。ToList();
foreach(lst中的var测试)
{
模型金额+=第一笔金额;
}
会话[“圣堂武士”]=lst;
}
然后将该会话值赋给tblPatientBill表的amount列

这是我的PatientView模型:

public class PatientViewModel
    {
        public int ID { get; set; }
        public Nullable<int> PatientBillID { get; set; }
        public Nullable<double> Amount { get; set; }
        public Nullable<System.DateTime> CreatedAt { get; set; }
        public string CreatedBy { get; set; }
        public string Description { get; set; }
        public Nullable<bool> is_active { get; set; }
    }
公共类PatientViewModel
{
公共int ID{get;set;}
公共可为空的PatientBillID{get;set;}
公共可空金额{get;set;}
公共可为空的CreatedAt{get;set;}
通过{get;set;}创建的公共字符串
公共字符串说明{get;set;}
public Nullable是活动的{get;set;}
}
TBLPartientBillDetail:

   public partial class tblPatientBillDetail
    {
        public int ID { get; set; }
        public Nullable<int> PatientBillID { get; set; }
        public Nullable<double> Amount { get; set; }
        public Nullable<System.DateTime> CreatedAt { get; set; }
        public string CreatedBy { get; set; }
        public string Description { get; set; }
        public Nullable<bool> is_active { get; set; }

        public virtual tblPatientBill tblPatientBill { get; set; }
    }
公共部分类TBLPartientBillDetail
{
公共int ID{get;set;}
公共可为空的PatientBillID{get;set;}
公共可空金额{get;set;}
公共可为空的CreatedAt{get;set;}
通过{get;set;}创建的公共字符串
公共字符串说明{get;set;}
public Nullable是活动的{get;set;}
公共虚拟tblPatientBill tblPatientBill{get;set;}
}
TBLPA客户账单:

  public partial class tblPatientBill
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public tblPatientBill()
        {
            this.tblPatientBillDetails = new HashSet<tblPatientBillDetail>();
        }

        public int ID { get; set; }
        public Nullable<int> PatientAppointmentID { get; set; }
        public string BillNo { get; set; }
        public Nullable<double> Amount { get; set; }
        public Nullable<double> Discount { get; set; }
        public Nullable<System.DateTime> CreatedAt { get; set; }
        public string CreatedBy { get; set; }
        public string Description { get; set; }
        public Nullable<bool> is_active { get; set; }

        public virtual tblPatientAppointment tblPatientAppointment { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<tblPatientBillDetail> tblPatientBillDetails { get; set; }
    }
公共部分类TBLPA用户账单
{
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2214:DoNotCallOverridableMethodsInConstructors”)]
公共TBLPAINTBILL()
{
this.tblPatientBillDetails=new HashSet();
}
公共int ID{get;set;}
公共可为空的PatientPointmentId{get;set;}
公共字符串BillNo{get;set;}
公共可空金额{get;set;}
公共可空折扣{get;set;}
公共可为空的CreatedAt{get;set;}
通过{get;set;}创建的公共字符串
公共字符串说明{get;set;}
public Nullable是活动的{get;set;}
公共虚拟tblpatientappoint tblpatientappoint{get;set;}
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2227:CollectionPropertiesShouldBreadOnly”)]
公共虚拟ICollection tblPatientBillDetails{get;set;}
}

我如何使用linq实现这一点。感谢您为特定的患者留言

var tblPatientBill = db.tblPatientBill.FirstOrDefault(x=>x.ID == PatientBillID && x.is_active == true);

if (tblPatientBill != null) {
    var lst = db.tblPatientBillDetails
          .Where(x=>x.ID == PatientBillID && x.is_active == true)
          .ToList();


    tblPatientBill.Amount = lst.Select(c => c.Amount).Sum();
}
为了所有的病人

var tblPatientBills = db.tblPatientBill.Where(x=> x.is_active == true).ToList();

if (tblPatientBills.Count != 0) {
    var lst = db.tblPatientBillDetails
          .Where(x=>x.PatientBillID == PatientBillID && x.is_active == true)
          .ToList();

    foreach(var patientBill in tblPatientBills)
    {
        patientBill.Amount = lst.Where(b => b.PatientBillId == PatientBillID).Select(c => c.Amount).Sum();
    }
}

“tblPbill”是什么?@sadia缩写为
TBLPartientbills
。它只是分配给主表的变量。它可以是
x,y..
任何与之关联的单词。它在下面的语句中给出了错误。其中(x=>x.PatientBillId==PatientBillId)它不识别等号后面的“PatientBillId”。在“DTO”@sadia ohh上给出错误,
PatientBillId
是用户输入的id。在您的示例中,它是66。此外,DTO只是一个类名,它将包含要显示的属性。@sadia将进一步解释