如何在 LINQ sql 中将两个表与一个具有不同值的表连接起来?
Posted
技术标签:
【中文标题】如何在 LINQ sql 中将两个表与一个具有不同值的表连接起来?【英文标题】:How to join two tables with one table having distinct value in LINQ sql? 【发布时间】:2018-02-09 16:47:44 【问题描述】:我有两个表emp_details
,其中我有emp_id
、emp_name
和emp_addresss
作为列,另一个表emp_hierarcy
我有emp_id
、emp_mgid
,其中多行具有相同的emp_id
.
我想编写一个 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 查询中的所有详细信息?
【问题讨论】:
看看这个:***.com/questions/2767709/…。要获得不同的值,enumerable
应该有一个 Distinct
方法。
你在使用实体框架吗?如果使用导航属性,通常不需要在 Linq-to-Entities 中执行 JOIN。
查看 GROUP BY 以及如何在 Linq 中进行操作。
@Dai 实际上怎么可能你能用一个我对 MVC 不熟悉的例子来解释我
【参考方案1】:
(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)
【讨论】:
这个我试过了,但是我如何获取所有详细信息,即 emp_name ,emp_address 等,因为它只打印 emp_id 正确的事情是我需要打印所有详细信息。 在select里面添加你想要的所有字段 能否分享您的数据,以便我在此基础上编写查询【参考方案2】:选择您感兴趣的所有字段:
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);
...
【讨论】:
以上是关于如何在 LINQ sql 中将两个表与一个具有不同值的表连接起来?的主要内容,如果未能解决你的问题,请参考以下文章
如何在jquery中将两个具有不同键的不同数组组合成一个数组
如何关联不同 dbml 图上的 Linq-To-Sql 对象?