2017-03-19 66 views
0

我試圖通過查詢加入兩個組來獲得一個結果集。Linq查詢 - 如何通過查詢加入以下兩組?課程ID

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)級別進行分組。

回答

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); 

同樣,你可以在你的代碼中應用這個,加入這個兩組。

+0

這裏問題在於不是加入新列,而是兩個查詢分別給出兩個記錄集。任何其他方式來解決這個問題? – Sudesh

+0

另一種解決方案也存在,但爲此您必須先嚐試。 –