首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

主表连子表连两次取两个值 一条linq搞定 ?该如何解决

2012-12-27 
主表连子表连两次取两个值 一条linq搞定 ? var query (from a in adviceNoteEarnestMoneyTableEntities.

主表连子表连两次取两个值 一条linq搞定 ?
 var query = (from a in adviceNoteEarnestMoneyTableEntities.View_AdviceNoteRightTable
                     join b in adviceNoteEarnestMoneyTableEntities.AdviceNoteLinkTable.Where(x => x.PayType == 42) on a.AdviceID equals b.AdviceID
                     join c in adviceNoteEarnestMoneyTableEntities.ExitRec on b.PayReturnID equals c.ID
                     join d in adviceNoteEarnestMoneyTableEntities.ContractSubReturnPayment.Where(y => y.PayType == 4) on c.ID equals d.RPID into t
                     from d in t.DefaultIfEmpty() into g
                     select new
                     {
                         AdviceID = g.Key.AdviceID,
                         AdviceState = g.Key.AdviceState,
                         AdviceType = g.Key.AdviceType,
                         ID = g.Key.ID,
                         OutDate = g.Key.OutDate,
                         ExitRecCount = g.ExitRecCount,
                         PayMoney = g.PayMoney
                     }).OrderByDescending(s => s.AdviceID);
我想让下面这个表在连一次并且这回paytype等于7了
adviceNoteEarnestMoneyTableEntities.ContractSubReturnPayment.Where(y => y.PayType == 7) 
完事要查出分别查出paytype是等于47时的paymonery,paymonery可以起别名,要左连接
[最优解释]


var query = (from a in adviceNoteEarnestMoneyTableEntities.View_AdviceNoteRightTable
  join b in adviceNoteEarnestMoneyTableEntities.AdviceNoteLinkTable.Where(x => x.PayType == 42) on a.AdviceID equals b.AdviceID
  join c in adviceNoteEarnestMoneyTableEntities.ExitRec on b.PayReturnID equals c.ID
  join d in adviceNoteEarnestMoneyTableEntities.ContractSubReturnPayment.Where(y => y.PayType == 4) on c.ID equals d.RPID into t
  from d in t.DefaultIfEmpty() 


  join e in adviceNoteEarnestMoneyTableEntities.TTTT on into e.id equals d.id into f
  from e in f.DefaultIfEmpty() 
  select new
  {
  AdviceID = a.AdviceID,
  AdviceState = a.AdviceState,
  AdviceType = a.AdviceType,
  OutDate = c.OutDate,
  ExitRecCount = c.ExitRecCount,
  PayMoney = d.PayMoney,
  tttt=e.tttt
  }).OrderByDescending(s => s.AdviceID);


[其他解释]
这段代码之后,继续用var query2一个查询,其中用let关键字使用你的query作为自查询。
反正Linq是延迟加载的。
[其他解释]
四十分都没人要了,无语啊
[其他解释]
 from d in t.DefaultIfEmpty() into g
这是什么个意思?
[其他解释]
给你分吧,我们经理把 那个问题简化了,字段直接去掉了,from d in t.DefaultIfEmpty() into g
这个是我想取最后的查询结果应该怎么写 ,告诉我下结贴给分
[其他解释]
var query = (from a in adviceNoteEarnestMoneyTableEntities.View_AdviceNoteRightTable
   join b in adviceNoteEarnestMoneyTableEntities.AdviceNoteLinkTable.Where(x => x.PayType == 42) on a.AdviceID equals b.AdviceID
   join c in adviceNoteEarnestMoneyTableEntities.ExitRec on b.PayReturnID equals c.ID
   join d in adviceNoteEarnestMoneyTableEntities.ContractSubReturnPayment.Where(y => y.PayType == 4) on c.ID equals d.RPID into t
   from d in t.DefaultIfEmpty() into g
   select new
   {
   AdviceID = g.Key.AdviceID,
   AdviceState = g.Key.AdviceState,
   AdviceType = g.Key.AdviceType,
   ID = g.Key.ID,
   OutDate = g.Key.OutDate,
   ExitRecCount = g.ExitRecCount,
   PayMoney = g.PayMoney
   }).OrderByDescending(s => s.AdviceID);就是这个正确的写法怎么写,在随便左联一个表怎么写,谢谢帮助   
[其他解释]
自查询-〉子查询。
[其他解释]
var query = (from a in adviceNoteEarnestMoneyTableEntities.View_AdviceNoteRightTable
                       join b in adviceNoteEarnestMoneyTableEntities.AdviceNoteLinkTable.Where(x => x.PayType == 42) on a.AdviceID equals b.AdviceID
                       join c in adviceNoteEarnestMoneyTableEntities.ExitRec on b.PayReturnID equals c.ID
                       join d in adviceNoteEarnestMoneyTableEntities.ContractSubReturnPayment.Where(y => y.PayType == 4) on c.ID equals d.RPID into t


                       from d in t.DefaultIfEmpty() 
                       
             select new
                       {
                           AdviceID = a.AdviceID,
                           AdviceState = a.AdviceState,
                           AdviceType = a.AdviceType,
                           OutDate = c.OutDate,
                           ExitRecCount = c.ExitRecCount,
                           PayMoney = d.PayMoney
                       }).OrderByDescending(s => s.AdviceID);在左联一个表帮我看看我也得对不啊
[其他解释]
该回复于2012-10-23 10:22:07被版主删除
[其他解释]
var query = (from a in adviceNoteEarnestMoneyTableEntities.View_AdviceNoteRightTable
   join b in adviceNoteEarnestMoneyTableEntities.AdviceNoteLinkTable.Where(x => x.PayType == 42) on a.AdviceID equals b.AdviceID
   join c in adviceNoteEarnestMoneyTableEntities.ExitRec on b.PayReturnID equals c.ID
   join d in adviceNoteEarnestMoneyTableEntities.ContractSubReturnPayment.Where(y => y.PayType == 4) on c.ID equals d.RPID join e in adviceNoteEarnestMoneyTableEntities.TTTT on into e.id equals d.id into t
   from d in t.DefaultIfEmpty() from e in t.DefaultIfEmpty()

    
  select new
   {
   AdviceID = a.AdviceID,
   AdviceState = a.AdviceState,
   AdviceType = a.AdviceType,
   OutDate = c.OutDate,
   ExitRecCount = c.ExitRecCount,
   PayMoney = d.PayMoney,
   tttt=e.tttt
   }).OrderByDescending(s => s.AdviceID);我最后一个左联写的对吗这句linq告诉我怎么写是正确的就ok了

热点排行