Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在实体框架中使用查找表_C#_.net_Entity Framework_Entity Framework 4_Lookup Tables - Fatal编程技术网

C# 在实体框架中使用查找表

C# 在实体框架中使用查找表,c#,.net,entity-framework,entity-framework-4,lookup-tables,C#,.net,Entity Framework,Entity Framework 4,Lookup Tables,我不得不在一个EF项目中使用一个查找表,我花了一点时间来修补它,但我不确定如何查询某些内容 如果我有三个表(这是一个用于说明问题的测试项目): 及 由查找表链接的: PS_Lookup --------- ID - Int - PK PersonID - Int - FK : Person.ID SkillID - Int - FK : Skill.ID 现在,如果我想返回所有ID为1的用户,我可以: var result = (from p in context.People

我不得不在一个EF项目中使用一个查找表,我花了一点时间来修补它,但我不确定如何查询某些内容

如果我有三个表(这是一个用于说明问题的测试项目):

由查找表链接的:

PS_Lookup
---------
ID - Int - PK
PersonID - Int - FK : Person.ID
SkillID - Int - FK : Skill.ID
现在,如果我想返回所有ID为1的用户,我可以:

var result = (from p in context.People                          
              select new
              {
                  PersonID = p.ID,
                  PersonName = p.PersonName,
                  FirstSkill = (from s in p.PS_Lookup 
                                where s.ID == 1
                                select s.SkillName),                              
              }).ToList();
我的问题是,我需要对上面的查询做什么更改才能返回每个具有ID 1技能的人的PersonName和PersonID?
i、 e.不返回“第一技能”。我不需要名字,因为我知道FirstSkill是什么,我看不出我与
where
子句有什么关系。

您需要在查询中使用where条件:

var result = (from p in context.People
              where p.PS_Lookup.Any(ps => ps.ID == 1)
              select new { p.ID, p.PersonName })
             .ToList();

太好了,谢谢你。我几乎已经习惯了林克,但它仍然不时地绊倒我。
var result = (from p in context.People                          
              select new
              {
                  PersonID = p.ID,
                  PersonName = p.PersonName,
                  FirstSkill = (from s in p.PS_Lookup 
                                where s.ID == 1
                                select s.SkillName),                              
              }).ToList();
var result = (from p in context.People
              where p.PS_Lookup.Any(ps => ps.ID == 1)
              select new { p.ID, p.PersonName })
             .ToList();