在关于如何很好地使用lambda表达式做一些建议之后。lambda表达式试图基于另一个查询一个列表
我想要的是获取基于代理机构的展示位置列表。我需要placement.agency!= agency的展示位置,但placement.agencypersonnel包含任何代理机构工作人员。
那么,植入广告不是该机构,但也有来自参与其他机构的布局
该机构我不知道基于第二条件如何查询人员。
因此,像:
// agency is being passed in
var agencySupervisors = agency.AgencyPersonnel;
return agency.Placements
.Where(p => p.Supervisors.Contains(agencySupervisors))
.Where(p => p.Agency != agency);
我得到一个包含应该指单个对象,而不是一个集合 - 这就是为什么它的示数..但我不知道如何得到它检查集合中的所有对象。
也尝试过任何
return agency.Placements
.Where(p => agencySupervisors.Any<PlacementSupervisor>(p.Supervisors))
.Where(p => p.Agency != agency);
所以希望它只是我用错了!
作品中的另一个扳手试图找出安置主管和机构人事实体如何相互关联..我认为它与AgencyPersonnelId = SupervisorId相关联,所以我猜这也必须考虑到我的表达。
谢谢!
编辑:如果两个列表中的对象类型不同 - 但我知道该ID将匹配时该如何处理。我是否必须编写一个比较器,并以某种方式将其纳入表达式?即。 AgencyPersonnelId = SupervisorId
我曾尝试:
return placements
.Where(p => p.Supervisors.Any(supervisor => agencySupervisors.Any(ap => ap.AgencyPersonnelId == supervisor.SupervisorId)));
但它给我任何结果,因此显然是错误的。
编辑:实际上,当我尝试遍历返回的集合中的位置时,我得到一个空引用异常 - 所以我不确定它是否与我的表达式或我返回的方式有关结果。
会agency.Placements不断含有不属于该agengy展示位置?如果没有,Suprvisors会提及他们所涉及的所有展示位置? – 2010-12-23 06:51:09