【发布时间】:2012-07-11 11:28:32
【问题描述】:
我怎样才能使这个 Distinct 工作:
var blockIdMap = (from panelEntry in panelEntries
select new {panelEntry.BlockNo, panelEntry.BlockID})
.Distinct()
.ToDictionary(mc => mc.BlockNo , mc => mc.BlockID);
我只需要 BlockNo 的唯一条目及其 BlockId,因为我将它们输入到 Dictionary 并且 BlockNo 应该是唯一的。 我只想拿第一个。
【问题讨论】:
-
你总是可以
GroupByBlockNo然后选择FirstBlockID。更改Distinct的唯一方法是使用IEqualityComparer<T>或使用实现IEquatable<T>并覆盖GetHashCode的类。你不能用匿名类型来做前者,它们有自己的实现,后者被锁定。 -
@AdamHouldsworth - The compiler overrides GetHashCode and Equals for anonymous types
-
@Jamiec 我知道,我修改了我的评论,声明您不能更改实施,因为我的初稿不准确。默认实现将考虑所有属性,而不仅仅是
BlockNo。