2017-08-31 90 views
0

我有兩個表emp_details其中i有emp_idemp_nameemp_addresss爲列和另一表emp_hierarcy其中i有emp_idemp_mgid與相同emp_id多個行。如何連接兩個表與LINQ sql中具有不同值的一個表?

我想編寫一個linq查詢,即將emp_id上的兩個表與emp_hierarcy中不同的emp_id連接起來。我知道如何連接表中SQLSERVER和我在SQLSERVER

SELECT 
    DISTINCT 
    eh.emp_id 
FROM 
    emp_details ed 
    LEFT OUTER JOIN emp_hierarcy eh ON ed.emp_id = eh.emp_id 

我能只emp_id如何讓LINQ查詢所有細節打印返回此查詢?

+0

看看這個:https://stackoverflow.com/questions/ 2767709/C鋒利加入-其中與 - LINQ和 - 拉姆達。爲了得到不同的值,'enumerable'應該有'Distinct'方法。 – Xedni

+0

你在使用實體框架嗎?如果您使用導航屬性,則通常不需要在Linq-to-Entities中執行JOIN。 – Dai

+0

看看GROUP BY,以及如何在Linq中做到這一點。 –

回答

0
(from a in emp_details 
       join b in emp_hierarcy on a.emp_id equals b.emp_id 
       select new 
       { 
       emp_id = a.emp_id 
       }).Distinct(); 

或者你可以嘗試,

(from a in emp_details 
       join b in emp_hierarcy on a.emp_id equals b.emp_id 
       select new 
       { 
       emp_id = a.emp_id 
       }).DistinctBy(c => c.emp_id) 
+0

這一個我已經嘗試過,但我如何得到所有細節,即emp_name,emp_地址等,因爲它只打印emp_id權利 事情是我需要打印所有的細節。 – Suhas

+0

添加所有你想要的字段 –

+0

對不起,我試過這個代碼,但它不工作 – Suhas

0

選擇你感興趣的所有字段:

var items = (from a in emp_details 
      join b in emp_hierarcy on a.emp_id equals b.emp_id 
      select new 
      { 
       emp_id = a.emp_id, 
       emp_name = a.emp_name, 
       emp_address = a.emp_address, 
       emp_mgid = b.emp_mgid 
      }).Distinct(); 

foreach(var item in items) 
{ 
    Console.WriteLine(item.emp_address); 
    ... 
}