【发布时间】:2016-08-04 08:01:11
【问题描述】:
我想对记录列表中的多个对象进行分组,而不仅仅是多个值。
我无法将分组用于引用类型对象。我有一组包含 Room、Type 和 DateTime 的对象。 Room、Type 和 DateTime 都有与之关联的属性。我已经在房间中添加了 IEquateable 接口,并且类型思维足以与 group by 一起使用。
var groups = collection
.Where(g => g.Stage == InventoryStage.StageA)
.GroupBy(g => new {g.BirthDate, g.Room, g.Type});
为了让这段代码正常工作,我必须调用这些对象上的特定属性以进行分组。问题是我需要存储在分组“键”中的复杂对象,以便我可以访问该组的特定信息
var groups = collection
.Where(g => g.Stage == InventoryStage.StageA)
.GroupBy(g => new {
Birthday = g.BirthDate,
RoomName = g.Room.Name,
TypeName = g.Type.Name
});
我最终不得不做 ^ 来让分组工作,但是这些组失去了我想要的复杂对象。
【问题讨论】:
-
您的
Room和Type应该覆盖Equals+GetHashCode或/并实现IEquatable<T>。
标签: c# linq grouping ienumerable iequatable