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

Узнай цену своей работы

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

Доброго времени суток, Господа. Вопрос в следующем. Как мне правильно сделать пересечение друх множеств? Вопросы следующие:

1.

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

2.

Есть ли из коробки метод, который также возвращает пересечение двух последовательностей, но в параметре принимает не объет IEqualityComparer<T> для сравнения, а предикат? Или придется ручками делать? И нужно ли это?

Решение задачи: «Пересечение двух множеств»

textual
Листинг программы
  1. public int GetHashCode( PropertyInfo prop )
  2. {
  3.      return prop.GetHashCode();
  4. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы