在下面的LINQ查询中,我想返回在Contractors表中找到的ContractorId。并非联系人表中的所有人都在承包商表中。我真正想要的是那些满足标准的承包商的ContractorIds列表。 ContractorId与ContactId不同。如何使用多个.Select()来简化LINQ查询以返回IQueryable(int)
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>>.
东西是不正确那里。多重。选择()是造成IQueryable<IEnumerable<Int>>
所以我在寻找一种方法来消除。选择(之一),并获得
IQueryable<Int>
任何建议一回?谢谢!
解决方案: 一种解决方案张贴在下面的答复。我在看到那个之前创建了另一个解决方案。在我的解决方案中,我开始在Contractors表中而不是Contacts表中删除一个图层和一个.Select()语句。
这就是我目前使用的。我过度思考一个相当简单的解决方案。 – DenaliHardtail 2011-01-20 17:48:10