我正在尝试使用 Entity Framework LINQ 语句加入 3 个表。
这是我的数据库图:
表中数据DeviceTypeGroups:
Key | Name
------------+-------------------
111 GroupOne
112 GroupTwo
表中数据DeviceTypes:
Key | Name | DeviceTypeGroupKey
------------+--------------+--------------------
1 Type1 111
2 Type2 111
3 Type3 112
表中数据Peers:
Key | Name | DeviceTypeGroupKey
------------+--------------+---------------------
1 Peer1 111
2 Peer2 112
3 Peer3 112
我想得到这样的输出:
这是我正在尝试的 LINQ 代码和 C# Web API 方法
[HttpGet]
[Route("devicetypegroups")]
[Produces("application/json")]
[SwaggerOperation("GetDeviceTypeGroups")]
[SwaggerResponse(400, "Bad input parameter")]
[SwaggerResponse(404, "Not found")]
[SwaggerResponse(500, "Internal server error")]
public virtual IActionResult GetDeviceTypeGroups()
{
try
{
var devicetypegroups =
(from dtg in _context.DeviceTypeGroups join dt in _context.DeviceTypes
on dtg.Key equals dt.DeviceTypeGroup.Key into dtgleft from dtgrecs in dtgleft.DefaultIfEmpty()
join pr in _context.Peers on dtgrecs.Key equals pr.DeviceTypeGroup.Key into peerleft
from peerleftRecs in peerleft.DefaultIfEmpty()
select new { dtg.Key, dtg.Name, dtg.DeviceTypes, dtg.Peers }).ToList();
}
}
但它没有返回正确的响应,它添加了一些额外的记录:
如您所见,它创建了与设备类型计数相同的额外节点数!
慕尼黑5688855
ITMISS
相关分类