在下面的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));
答案 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));