1

EF プロジェクトでルックアップ テーブルを使用する必要がありましたが、それを機能させるには少し手間がかかりましたが、何かをクエリする方法がわかりません。

3 つのテーブルがある場合 (これは質問を説明するためのテスト プロジェクトです):

Person
------
ID - Int - PK
PersonName - varchar[50] 

Skill
-----
ID - Int - PK
SkillName - varchar[50]

これらはルックアップ テーブルによってリンクされています。

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 を返すために、上記のクエリで何を変更する必要があるかということです。つまり、「FirstSkill」を返しません。whereFirstSkill が何であるかを知っていて、この句と何をしなければならないかがわからないので、名前は必要ありません。

4

1 に答える 1

2

クエリで where 条件を使用する必要があります。

var result = (from p in context.People
              where p.PS_Lookup.Any(ps => ps.ID == 1)
              select new { p.ID, p.PersonName })
             .ToList();
于 2012-07-31T08:16:39.903 に答える