Como você cria uma implementação de igualdade dinâmica onde você pode passar os nomes de propriedades para serem comparados?

Digamos que eu tenha um objeto Person com as propriedades abaixo:

    public class Person
    {
        public int ID { get; set; }
        public int EmployeeNo { get; set; }
        public string JobDescription { get; set; }
        public string Code { get; set; }
    }

Como eu verificaria dinamicamente a igualdade de propriedades específicas pelo nome?

por exemplo.

var dynamicEqualityComparer = RetrieveDynamicEqualityComparer("ID", "JobDescription");
var intersectedPersons = listOfPerson1.Intersect(listOfPerson2, dynamicEqualityComparer);

O snippit acima usaria o método de intersecção linq padrão usando o método de comparação de igualdade gerada dinamicamente, que compara apenas os campos "ID" e "JobDescription".

Eu diria que algo assim teria sido fácil de encontrar, mas até agora não consegui localizar nada do tipo.

questionAnswers(2)

yourAnswerToTheQuestion