如何连接两个表与LINQ sql中具有不同值的一个表?

问题描述:

我有两个表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://*.com/questions/ 2767709/C锋利加入-其中与 - LINQ和 - 拉姆达。为了得到不同的值,'enumerable'应该有'Distinct'方法。 – Xedni

+0

你在使用实体框架吗?如果您使用导航属性,则通常不需要在Linq-to-Entities中执行JOIN。 – Dai

+0

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

(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

选择你感兴趣的所有字段:

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