Положение:
У меня есть люди с определенными навыками, и они могут / могут принадлежать к нескольким областям.
Навыки связаны в отдельной таблице, так же как и области.
Я получаю список людей, выбрав всех людей с совпадением по каждому навыку, и добавляю их в список, где я могу использовать Distinct (), чтобы убедиться, что они не появляются дважды.
Итоговый список лиц:
List<Person> peopleWithRightSkills
На каждом объекте [Person] у меня есть как минимум 1 связанный адрес, но они могут иметь больше, чем в отношении [Person]
У меня есть другой список:
List<PostalCode> acceptedPostalcodes
Теперь мне нужно сравнить и отфильтровать тех людей с правами навыка, у которых есть адрес, почтовый код которого находится в пределах принятых почтовых кодов
Я исследовал лямбда-выражения, 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 адресов), и мне нужно сравнить этот список адресов с «действительным списком почтовых индексов» для каждого человека.
В надежде на хороший ответ на этот вопрос, так как я застрял уже несколько часов, пытаясь выяснить, какой синтаксис использовать для решения этого более красивого и менее сложного процесса.