C# 在实体框架中使用查找表
我不得不在一个EF项目中使用一个查找表,我花了一点时间来修补它,但我不确定如何查询某些内容 如果我有三个表(这是一个用于说明问题的测试项目): 及 由查找表链接的: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
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();