LINQ查询具有聚合功能和连接条件

时间:2013-02-28 22:03:52

标签: c# sql linq-to-entities

我在SQL中有以下非常简单的查询:

select Sum(m.unitPrice * mtp.units) charges 
from tbl_Medicines m, tbl_MedicineToPatient mtp 
where m.medicineId = mtp.medicineId and mtp.patientId = 1001  

我需要将此查询转换为Linq to Entities查询。我尝试了以下(我知道错了):

var varQuery = (from med in hmsdatabase.TblMedicines
              join medtopat in hmsdatabase.TblMedicineToPatients
              on med.MedicineId equals medtopat.MedicineId
              let jjj = new { med, medtopat}
              where medtopat.PatientId == 1001
              select jjj.Sum(med.UnitPrice * medtopat.Units)
              ).First();

我知道这没有意义。任何形式的帮助表示赞赏。我找不到一个帖子,它有一个LINQ格式的查询,包含聚合函数,一个连接条件和两个不同表的字段上的(乘法)操作。

1 个答案:

答案 0 :(得分:2)

应该只是

var total = (from med in hmsdatabase.TblMedicines
                join medtopat in hmsdatabase.TblMedicineToPatients
                    on med.MedicineId equals medtopat.MedicineId
                where medtopat.PatientId == 1001
                select med.UnitPrice * medtopat.Units
                ).Sum();

请注意,这会返回单个值,而不是集合。