【发布时间】:2010-10-28 00:45:05
【问题描述】:
情况:
我有一些具有特定技能的人,他们可以/可能属于多个领域。 技能链接在单独的表格中,区域也是如此。
我通过选择每个技能匹配的所有人来获取人员列表,并将他们添加到一个列表中,我可以使用 Distinct() 确保他们不会出现两次。
结果列表:
List<Person> peopleWithRightSkills
在每个 [Person] 对象上,我至少链接了 1 个地址,但与 [Person] 相关的地址可以更多
我还有另一个清单:
List<PostalCode> acceptedPostalcodes
现在我需要比较和过滤那些地址的邮政编码在 acceptedPostalcodes
内的地址的 peopleWithRightSkills我一直在研究 Lambda 表达式、SelectMany 以及其他解决方案,但现在,我只有一个选项,我认为这是做事的“旧风格”,即遍历每个人并为每个人匹配她/他的地址列表对照邮政编码列表。然后对于每场比赛将其添加到:
List<Person> matchedPeople
表格概览(缩短所需的详细信息)
[Table:Person]
int:ID (primary)
string:FirstName
string:LastName
[Table:Address]
int:Person_ID (foreign key to Person)
int:PostalCode_ID (foreing key to PostalCode)
string:StreetName
[Table:PostalCode]
int:ID
string:CityName
正如我看到的问题,它只是一个“短名单公关人员”(最少 1 个,可能最多 10 个地址),我需要将此地址列表与每个人的“有效邮政编码列表”进行比较。
希望对此有一个很好的答案,因为我已经被困了几个小时,试图找出使用什么语法来解决这个更漂亮、性能更低的问题。
【问题讨论】:
标签: c# linq-to-sql collections linq