ual é a maneira 'moderna' de encontrar itens comuns em duas Listas <T> de objeto

Tenho duas listas genéricas contendo tipos diferentes; por exemplo, vamos chamá-lasProducts eEmployees. Estou tentando encontrar produtos baseados no mesmo local que os funcionários, ou seja, ondeproduct.SiteId == emp.SiteId

List<Product> lstProds;
List<Employees> lstEmps;

Meu cérebro (antigo skool) está me dizendo para usar umforEach loop para encontrar as correspondências, mas suspeito que exista uma maneira ('melhor' / terser / mais rápida?) de fazê-lo usando o Linq. Alguém pode me iluminar? Todos os exemplos que encontrei on-line lidam com listas de primitivas (strings / ints) e não são especialmente útei

questionAnswers(1)

yourAnswerToTheQuestion