Поэтому у меня есть проблемы с моим кодом LINQ, где я должен выбрать определенный набор данных, я реализую следующие IEqualityComparer
:LINQ - Distinct игнорируется?
public class ProjectRoleComparer : IEqualityComparer<ProjectUserRoleMap>
{
public bool Equals(ProjectUserRoleMap x, ProjectUserRoleMap y)
{
return x.RoleID.Equals(y.RoleID);
}
public int GetHashCode(ProjectUserRoleMap obj)
{
return obj.GetHashCode();
}
}
В этом контексте я хотел бы получить кучу ProjectUserRoleMap
объектов, связанных с данный проект, идентифицированный по его идентификатору, мне нужен только один ProjectUserRoleMap
за уникальный RoleID
, но моя строгая инструкция для выполнения отдельного выбора на RoleID
игнорируется. Я совершенно не знаю, почему это так, и не понимаю LINQ, чтобы думать об обходном пути. Вот код вызова:
ProjectRoleComparer prCom = new ProjectRoleComparer();
IEnumerable<ProjectUserRoleMap> roleList = ProjectData.AllProjectUserRoleMap.Where(x => x.ProjectID == id).Distinct(prCom);
Этот код дает мне 6 записей, когда количество записей я знаю Я хочу только 4. Я делаю что-то не так с моим использованием LINQ?
Для справки, ProjectUserRoleMap
объекта имеет, Идентификатор роли (INT)
Вау! Так просто! Как я пропустил это? Работает идеально, как и сейчас. Большое спасибо! –
И спасибо за небольшой урок в сравнении :) –
@FelixWeir: Добро пожаловать :) –