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.