C# SQL或EF core基于其他表中的名称查找Target.Id的最简单方法是什么

C# SQL或EF core基于其他表中的名称查找Target.Id的最简单方法是什么,c#,sql,entity-framework,core,C#,Sql,Entity Framework,Core,我正在努力寻找解决此target.ID的好方法 我有一个字符串,上面写着“Machine.name,Department.name,Workgroup.name,Resource.name,Workplace.name”,我想知道这个连接的目标ID是什么 我可以访问EF core,但欢迎使用多种解决方案来帮助理解这一点 现在我的一位同事向我提出了一个问题 SELECT t.Id FROM Target t, TargetResource tr, TargetMachine tm, TargetW

我正在努力寻找解决此target.ID的好方法

我有一个字符串,上面写着“Machine.name,Department.name,Workgroup.name,Resource.name,Workplace.name”,我想知道这个连接的目标ID是什么

我可以访问EF core,但欢迎使用多种解决方案来帮助理解这一点


现在我的一位同事向我提出了一个问题

SELECT t.Id FROM Target t, TargetResource tr, TargetMachine tm, TargetWorkplace tw
WHERE t.Id = tr.TargetId 
AND t.Id = tm.TargetId 
AND t.Id = tw.TargetId
AND tr.ResourceId = (SELECT r.Id FROM Resource r WHERE Name = 'Res1' 
                        AND r.DepartmentId = (SELECT d.Id FROM Department d WHERE Name = 'D2')  
                        AND r.WorkgroupId = (SELECT w.Id FROM Workgroup w WHERE Name = 'WG4'))
AND tm.MachineId = (SELECT m.Id FROM Machine m WHERE Name = 'MaC2' 
                        AND m.DepartmentId = (SELECT d.Id FROM Department d WHERE Name = 'D2'))
AND tw.WorkplaceId = (SELECT w.Id FROM Workplace w WHERE Name = 'WorkP3')

这只是一个linq WHERE查询_context.Workplace.Where(x=>x.Name==“Home”).ToList()@JDWEN我的问题是中间的3对多,我现在正在做的是列表和LoTSA循环比较,但是看起来很重。取决于你多久做一次操作。如果你经常这样做,那就为每张桌子编一本字典吧。创建字典需要时间,但查找速度会非常快。您已经拥有字典,因为它是主键。所以按主键查找:@jdweng您回答的是什么问题?@insane_developer:减少循环时间。