【发布时间】:2013-01-08 03:31:38
【问题描述】:
在下面的 LINQ 查询中,我想返回在 Contractors 表中找到的 ContractorId。并非联系人表中的所有人都在承包商表中。我真正想要的是那些符合标准的承包商的 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>,但contractsWithCertsFor2010 是 IQueryable<IEnumerable<Int>>. 有什么地方不对劲。多个 .Select() 导致 IQueryable<IEnumerable<Int>> 所以我正在寻找一种方法来消除一个 .Select() 并获得
IQueryable<Int>
有什么建议吗?谢谢!
解决方案: 一个解决方案发布在下面的回复中。在看到另一个解决方案之前,我创建了另一个解决方案。在我的解决方案中,我从 Contractors 表而不是 Contacts 表开始,消除了一层和一个 .Select() 语句。
【问题讨论】:
标签: linq entity-framework entity-framework-4