【发布时间】:2013-04-22 13:07:01
【问题描述】:
所以我的 LINQ 代码有问题,我必须选择一个 Distinct 数据集,我实现了以下IEqualityComparer:
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 对象,由它的 ID 标识,我只想要一个 ProjectUserRoleMap 每个唯一的 RoleID,但我严格指示执行不同的RoleID 上的选择被忽略。我完全不知道为什么会这样,并且对 LINQ 的了解不足以想到解决方法。下面是调用代码:
ProjectRoleComparer prCom = new ProjectRoleComparer();
IEnumerable<ProjectUserRoleMap> roleList = ProjectData.AllProjectUserRoleMap.Where(x => x.ProjectID == id).Distinct(prCom);
这段代码给了我 6 个条目,而我知道我想要的条目数只有 4 个。我对 LINQ 的使用有什么问题吗?
作为参考,ProjectUserRoleMap 对象有一个 RoleID,(int)
【问题讨论】:
标签: c# .net linq distinct gethashcode