Linq查询 - 如何通过查询加入以下两个组?在课程ID上

时间:2017-03-19 10:10:00

标签: c# linq

我试图通过查询加入两个小组来获得一个结果集。

var query = from PP in _db.paymentPlans
            join APP in _db.Applications on PP.applicationID equals APP.ApplicationId
            join C in _db.Courses on APP.courseID equals C.courseID
            where PP.active == true && APP.agentID == agentID
            orderby C.courseID ascending
            group new {C,PP} by new {C.courseID} into totalRecievable
            // Query 1

            from PD in _db.paymentDetails
            join PP in _db.paymentPlans on PD.paymentPlanID equals PP.paymentPlanID
            join APP in _db.Applications on PP.applicationID equals APP.ApplicationId
            join C in _db.Courses on APP.courseID equals C.courseID
            where PP.active == true && APP.agentID == agentID
            orderby C.courseID ascending
            group new { C,PD } by new { C.courseID, C.cricosCode, C.courseName } into paymentsCourseWise
           // Query 2

            select new PdPpAppCourseModel
            {
                courseID = paymentsCourseWise.Key.courseID,
                cricosCode = paymentsCourseWise.Key.cricosCode,
                courseName = paymentsCourseWise.Key.courseName,
                totalAmount = totalRecievable.Sum(x => x.PP.totalAmount),
                paidAmount = paymentsCourseWise.Sum(x => x.PD.paidAmount)
            }).ToList();

总计约来自查询1,因为它应该在付款计划(PP)级别中分组。

1 个答案:

答案 0 :(得分:0)

您只能组合相同类型的枚举,您可以将它们都投影到公共类,然后将它们连接起来:

var result1 = db1.table.Where(a=>a.value>0).Select( x=> new Foo() { //set props });
var result2 = db2.table.Where(a=>a.value>0).Select( x=> new Foo() { //set props });
var resultSum = result1.Concat(result2);

同样,您可以在代码中应用它并加入这两个组。