2016-03-17 40 views
0

我有一個表「員工」有列(id,emp_name,emp_email,mngr_email)也有另一個表「mngr」 它有列(id,電子郵件)。我想獲取員工的員工記錄和mngr記錄。最終也是一名僱員。所以我也想在記錄中使用mangr名字。請幫助我獲得查詢。linq查詢沒有返回所需的詳細信息

var rec = (from em in Context.employee 
      join mn in .Context.mngr on em.id equals mn.id 
      where em.id == 1 
      select new Records() 
      { 

       Name = em.name, 
       emp_email = em.email, 
       mngr_email = mn.email, 
       mngr_name = ---?, 
       mngr_id = mn.id 

      }).ToList(); 

回答

1

您的模型可能設計得更好,但是根據您有什麼需要第二次加入員工。您可以通過電子郵件鏈接,所以:

var rec= (from em in Context.employee 
      left join me in Context.employee on me.email equals em.mngr_email 
      where em.id==1 
      select new Records() 
      { 
       Name = em.name, 
       emp_email= em.email, 
       mngr_email = em.mngr_email, 
       mngr_name = me.name, 
       mngr_id = me.id 
      }).ToList(); 

這裏是一個更直接的方法,以員工/經理自參照關係:http://www.codeproject.com/Articles/206410/How-to-Configure-a-Self-Referencing-Entity-in-Code

相關問題