所以,我有我的LINQ代码,在那里我必须选择一个不同的数据集的问题,我实现以下IEqualityComparer
:LINQ - 区别被忽略?
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
对象都有一个角色ID,(INT)
哇!很简单!我怎么错过了?完美的工作,如现在的打算。非常感谢! – 2013-04-22 13:11:19
并感谢在比较中的小课程:) – 2013-04-22 13:34:36
@FelixWeir:欢迎您:) – 2013-04-22 13:37:21