2011-01-19 18 views
0

在下面的LINQ语句中,我试图选择人员,但仅当他们的ID出现在另一个表(连接表)中时才会选择。我错过了什么?只有当他们的ID出现在另一个表中时,我该如何选择一个人?

在这个例子中,我有一个People表和一个Contractors表。该人的联系人ID可能会出现在承包商表格中。我想获取Contractors表中出现的联系人Id。

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

回答

0

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

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

我开始使用的。任何()但那一点都不不工作。我可能一直在想这个解决方案。谢谢! – DenaliHardtail 2011-01-19 22:52:42

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. 
相关问题