在下面的LINQ查询中,我想返回在承包商表中找到的ContractorId。并不是所有在Contacts表中的人都在Contractors表中。我真正想要的是符合条件的承包商的ContractorIds列表。ContractorId与ContactId不同。
var contractorsWithCertsFor2010 = dc.Contacts.Where(x => x.Contractors
.Any(d => d.ContractorStatus
.Any(date => date.StatusDate.Year >= 2010)))
.Select(x => x.Contractors
.Select(dr => dr.ContractorId));
IEnumerable<int> differenceQuery = allPeople.Except(contractorsWithCertsFor2010);
allPeople是一个IQueryable<Int>
,但contractorsWithCertsFor2010是一个IQueryable<IEnumerable<Int>>
。这里有些不对劲。多个.Select()导致了IQueryable<IEnumerable<Int>>
,因此我正在寻找一种方法来消除其中一个.Select()并获得返回值
IQueryable<Int>
有什么建议吗?谢谢!
解决方案: 下面的回复中发布了一个解决方案。在看到那个解决方案之前,我创建了另一个解决方案。在我的解决方案中,我从承包商表开始,而不是联系人表,消除了一层和一个 .Select() 语句。