Рассмотрим эти две структуры:
struct Task
{
public Int32 Id;
public String Name;
public List<Registration> Registrations;
}
struct Registration
{
public Int32 Id;
public Int32 TaskId;
public String Comment;
public Double Hours;
}
Я выбираю группу записей в DataTable в новые структуры, например:
var tasks = data.AsEnumerable().Select(t => new Task
{
Id = Convert.ToInt32(t["ProjectTaskId"]),
Name = Convert.ToString(t["ProjectTaskName"]),
Registrations = new List<Registration>()
});
Но когда я вызываю Distinct()
для коллекции, она не распознает объекты с такими же значениями ( Id , Имя , Регистрация ) как быть равным.
Но если я использую компаратор равенства; сравнивая свойство Id на объектах, все нормально и круто ...:
class TaskIdComparer : IEqualityComparer<Task>
{
public bool Equals(Task x, Task y)
{
return x.Id == y.Id;
}
public Int32 GetHashCode(Task t)
{
return t.Id.GetHashCode();
}
}
Что мне здесь не хватает? Distinct()
проверяет что-то еще, кроме значения свойств?