如果他们的ID出现在另一个表中,我该如何选择一个人?

时间:2011-01-19 22:35:30

标签: linq entity-framework

在下面的LINQ语句中,我试图选择人员,但前提是他们的Id出现在另一个表(连接表)中。我错过了什么?

在这个例子中,我有一个People表和一个Contractors表。 Person的contactId可能出现在Contractors表中。我想抓住出现在Contractors表中的People的contactId。

var allPeople = People.Where(x => x.Contractors
                                   .Where(m=> m.ContactID == x.ContactID)
                                  .Select(x => x.ContactID));

2 个答案:

答案 0 :(得分:1)

常规LINQ JOIN语句怎么样:

var peopleWithContact = People.Join(
    Contractors, 
    p => p.ContactId, // the field to join by from People table
    c => c.ContactId, // the field to join by from Contractors table
    (p, c) => p.ContactId); // the result if match; could be just p.

答案 1 :(得分:0)

Where函数必须返回一个布尔表达式。如果我正确理解您的问题,您只需要来自人员表中的人员也可以在承包商表中。然后我们可以这样问:如果任何承包商有这个ID,请给我一个人:

var allPeople = People.Where(x => x.Contractors
                                   .Any(m => m.ContactID == x.ContactID));