У меня есть случай, когда мне нужно захватить кучу элементов на разных, но мой источник представляет собой набор объектов с двумя свойствами, например:
public class SkillRequirement
{
public string Skill { get; set; }
public string Requirement { get; set; }
}
Я пытаюсь получить коллекцию следующим образом:
SkillRequirementComparer sCom = new SkillRequirementComparer();
var distinct_list = source.Distinct(sCom);
Я попытался реализовать IEqualityComparer<T>
для этого, но я упал в тупик по методу GetHashCode()
.
Класс для Comparer:
public class SkillRequirementComparer : IEqualityComparer<SkillRequirement>
{
public bool Equals(SkillRequirement x, SkillRequirement y)
{
if (x.Skill.Equals(y.Skill) && x.Requirement.Equals(y.Requirement))
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(SkillRequirement obj)
{
//?????
}
}
Обычно я просто использовал бы GetHashCode()
для свойства, но поскольку я сравниваю два свойства, я немного теряю, что делать. Я делаю что-то неправильно или пропуская что-то действительно очевидное?