Пересечение двух множеств - C#

Формулировка задачи:

Доброго времени суток, Господа. Вопрос в следующем. Как мне правильно сделать пересечение друх множеств? Вопросы следующие: 1. Хочу найти пересечение двух последовательностей, которые хранят информацию о свойствах двух классов, по имени этих свойств:
PropertyInfo[] sourceProperties     = typeSource.GetProperties();
PropertyInfo[] destinationProperties    = typeDestination.GetProperties();
 
var sourceCommonProperies       = sourceProperties.Intersect( destinationProperties, propertyComparer );
Где propertyComparer - объект класса PropertyComparer, реализованный мной таким образом:
internal class PropertyComparer : IEqualityComparer<PropertyInfo>
{
    public bool Equals( PropertyInfo prop1, PropertyInfo prop2 )
    {
        string  prop1Name       =   prop1.Name.ToUpper();
        string  prop2Name       =   prop2.Name.ToUpper();
        Type    prop1Type       =   prop1.PropertyType;
        Type    prop2Type       =   prop2.PropertyType;
 
        if( ( string.Compare( prop1Name, prop2Name, true ) == 0 ) && ( prop1Type.Equals( prop2Type ) ) )
            return true;
        
        return false;
    }
 
    public int GetHashCode( PropertyInfo prop )
    {
        return 0;
    }
}
Вопрос такой, тут обязательно нужно реализовать GetHashCode, что должно быть в ней написано, если в Equals ничего не сравнивается по хеш ключу? Не могу понять. Пытался ее реализовать таким образом:
public int GetHashCode( PropertyInfo prop )
{
    return prop.Name.GetHashCode();
}
но мне мало это что дало. Даже больше скажу...так он перестает правильно сравнивать свойства по имени, как я хотел бы. 2. Есть ли из коробки метод, который также возвращает пересечение двух последовательностей, но в параметре принимает не объет IEqualityComparer<T> для сравнения, а предикат? Или придется ручками делать? И нужно ли это?

Код к задаче: «Пересечение двух множеств - C#»

textual
public int GetHashCode( PropertyInfo prop )
{
     return prop.GetHashCode();
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

7   голосов, оценка 4.143 из 5


СДЕЛАЙТЕ РЕПОСТ