Jak stworzyć dynamiczną implementację równości, w której można podać nazwy właściwości do porównania?

Powiedz, że mam obiekt Osoba z poniższymi właściwościami:

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

Jak mógłbym dynamicznie sprawdzać równość określonych właściwości według nazwy?

na przykład.

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

Powyższy snippit użyje domyślnej metody przecięcia linq przy użyciu dynamicznie generowanej metody porównywania równości, która porównuje tylko pola „ID” i „JobDescription”.

Zakładam, że coś takiego byłoby łatwe do znalezienia, ale jak dotąd nie udało mi się znaleźć niczego w tym rodzaju.

questionAnswers(2)

yourAnswerToTheQuestion