Lambda独特选择
这个问题在这里已经有了答案:
如果您不在类中重写Equals
和GetHashCode
,或者提供自定义的相等比较器,则Distinct
方法使用默认的相等比较器作为类型。并且它通过引用来比较引用类型。 不是通过属性值。 如果你不希望这种行为覆盖你的类中的相关方法,或者如果你不能改变类实现一个类型的IEqualityComparer
并传递给Distinct
:
var ResourceTypeNameList = Resources
.Select(r => new bl_SelectBox{ text=r.ResourceTypeName, value=r.resourceTypeID })
.Distinct(new MyEqualityComparer());
另一个快速解决方案是使用GroupBy
:
var ResourceTypeNameList = Resources
.Select(r => new bl_SelectBox{ text=r.ResourceTypeName, value=r.resourceTypeID })
.GroupBy(x => x.SomeProperty)
.Select(x => x.First());
链接地址: http://www.djcxy.com/p/51291.html